2
아래 코드와 관련하여 질문이 있습니다. Float.toString()
메서드를 사용하면 숫자가 반올림됩니다. 왜 이렇게합니까? 그 뒤에 어떤 특정한 논리가 있습니까?Float.toString()이 숫자 값을 변경하는 이유는 무엇입니까?
Float.toString()
의 내부 코드도 살펴 보았습니다. 전화는 FloatingDecimal(f).toJavaFormatString()
입니다.
public static void main(String[] args) {
Float f = Float.intBitsToFloat(1342177280);
String simpleString = new BigDecimal(f).toPlainString();
System.out.println("simpleString value " + simpleString);
String withToString = new BigDecimal(Float.toString(f)).toPlainString();
System.out.println("withToString value " + withToString);
}
출력 BigDecimal의 생성자 간단이
simpleString value 8589934592
withToString value 8589934600 //here value changed
플로트를 더블로 변경하십시오. 플로트의 정밀도보다 가수 부분이 더 큽니다. –
단순히 Float.toString이 이것을 반환하기 때문에 : 8.5899346E9 그래서 BigDecimal은 왼쪽에있는 것만 사용할 수 있습니다 – AxelH
예, Float의 toString 구현에서 선택한 정밀도처럼 보입니다. –