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은 많은 기능을 제공합니다.
변환 Double
에Float
public static Float convertToFloat(Double doubleValue) {
return doubleValue == null ? null : doubleValue.floatValue();
}
변환 double
에Float
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
'Programing' 카테고리의 다른 글
이름이있는 JavaScript 사전 (0) | 2021.01.05 |
---|---|
java.lang.IllegalArgumentException : 기본 서블릿 처리를 구성하려면 ServletContext가 필요합니다. (0) | 2021.01.05 |
현재 UITableViewController 위에 UIView를 추가하는 방법 (0) | 2021.01.05 |
컨트롤에 코드 블록 (예 : <%… %>)이 포함되어 있으므로 컨트롤 컬렉션을 수정할 수 없습니다. (0) | 2021.01.05 |
node.js 표준 모듈의 전역 변수? (0) | 2021.01.05 |