Programing

Java에서 double을 float로 변환

lottogame 2021. 1. 5. 07:40
반응형

Java에서 double을 float로 변환


.NET으로 변환 double하는 것과 관련된 문제 float있습니다. 사실, 난, 부동 소수점 형 저장 23423424666767데이터베이스에,을,하지만 우리는 코드 아래에 데이터베이스에서 데이터를 얻을 때, getInfoValueNumeric()그것은의의 double유형입니다. 우리가 얻는 가치는 2.3423424666767E13형식에 있습니다.

그래서 우리는 어떻게 float형식 데이터를 23423424666767습니까?

2.3423424666767E13 to 23423424666767

public void setInfoValueNumeric(java.lang.Double value) {
    setValue(4, value);
}


@javax.persistence.Column(name = "InfoValueNumeric", precision = 53)
public java.lang.Double getInfoValueNumeric() {
    return (java.lang.Double) getValue(4);
}

더블을 부유물로 캐스팅하십시오.

double d = getInfoValueNumeric();
float f = (float)d;

또한 기본 유형은 무한한 숫자 세트를 저장할 수 없습니다.

float range: from 1.40129846432481707e-45 to 3.40282346638528860e+38
double range: from 1.7e–308 to 1.7e+308

데이터베이스에 저장된 값을 BigDecimal 유형으로 검색하는 것이 좋습니다.

BigDecimal number = new BigDecimal("2.3423424666767E13");

int myInt = number.intValue();
double myDouble = number.doubleValue();

// your purpose
float myFloat = number.floatValue();

BigDecimal은 많은 기능을 제공합니다.


변환 DoubleFloat

public static Float convertToFloat(Double doubleValue) {
    return doubleValue == null ? null : doubleValue.floatValue();
}

변환 doubleFloat

public static Float convertToFloat(double doubleValue) {
    return (float) doubleValue;
}

"2.3423424666767E13을 23423424666767로 변환하는 방법"에 대한 질문에 답하려면

10 진수 형식화를 위해 10 진수 형식기를 사용할 수 있습니다 .

     double d = 2.3423424666767E13;
     DecimalFormat decimalFormat = new DecimalFormat("#");
     System.out.println(decimalFormat.format(d));

출력 : 23423424666767


double에서 float로 변환하면 축소 변환이됩니다. 로부터 문서 :

축소 기본 변환은 숫자 값의 전체 크기에 대한 정보를 잃을 수 있으며 정밀도와 범위도 잃을 수 있습니다.

double에서 float 로의 축소 기본 변환은 IEEE 754 반올림 규칙 (§4.2.4)에 의해 관리됩니다. 이 변환은 정밀도를 잃을 수 있지만 범위도 잃어 0이 아닌 double에서 float 0이되고 유한 double에서 float 무한대가됩니다. 이중 NaN은 부동 NaN으로 변환되고 이중 무한대는 동일한 부호가있는 부동 무한대로 변환됩니다.

그래서 그것은 좋은 생각이 아닙니다. 그래도 원하는 경우 다음과 같이 할 수 있습니다.

double d = 3.0;
float f = (float) d;

문제는 값을 단 정밀도 부동 소수점 유형으로 정확하게 저장할 수 없다는 것입니다. 증명:

public class test{
    public static void main(String[] args){
        Float a = Float.valueOf("23423424666767");
        System.out.printf("%f\n", a); //23423424135168,000000
        System.out.println(a);        //2.34234241E13
    }
}

Another thing is: you don't get "2.3423424666767E13", it's just the visual representation of the number stored in memory. "How you print out" and "what is in memory" are two distinct things. Example above shows you how to print the number as float, which avoids scientific notation you were getting.


First of all, the fact that the value in the database is a float does not mean that it also fits in a Java float. Float is short for floating point, and floating point types of various precisions exist. Java types float and double are both floating point types of different precision. In a database both are called FLOAT. Since double has a higher precision than float, it probably is a better idea not to cast your value to a float, because you might lose precision.

You might also use BigDecimal, which represent an arbitrary-precision number.


Use dataType casting. For example:

// converting from double to float:
double someValue;
// cast someValue to float!
float newValue = (float)someValue;

Cheers!

Note:

Integers are whole numbers, e.g. 10, 400, or -5.

Floating point numbers (floats) have decimal points and decimal places, for example 12.5, and 56.7786543.

Doubles are a specific type of floating point number that have greater precision than standard floating point numbers (meaning that they are accurate to a greater number of decimal places).


This is a nice way to do it:

`Double d = 0.5;`
`float f = d.floatValue();`

if you have d as a primitive type just add one line:

double d = 0.5;
`Double D = Double.valueOf(d);`
`float f = D.floatValue();`

Float.parseFloat(String.valueOf(your_number)

ReferenceURL : https://stackoverflow.com/questions/32837783/convert-double-to-float-in-java

반응형