2014-11-10 5 views

답변

3

Java Language Specification, §3.10.2, Floating-Point Literals : 내부 IEEE 754 이진 부동 소수점 표현하는 부동 소수점 수의 유니 코드 문자열 표현에서 적절한 입력 변환

상세는 방법 클래스 Float 및 클래스 valueOf 설명된다 java.lang 패키지 Double.

Float.valueOf Javadoc :

s는 보통 "부동 소수점 표기"또는 정확한 16 진수 값으로 정확한 진수 값을 나타내는 것으로 간주된다; 이 정확한 수치 값을 개념적으로 "무한히 정밀한"이진 값으로 변환 한 다음 IEEE754 부동 소수점 산술의 가장 가까운 반올림 규칙에 따라 float으로 반올림합니다. [...]

+0

또한 §4.2.4 (https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.2.4)에서는 다른 부동 소수점 연산의 라운딩이 동일해야한다고 규정하고 있습니다 그래서'valueOf()'는 나머지 Java와 일치합니다. –

+0

위의 언어에서는 123456788.000000000000 (모든 숫자가 0 인 경우)을 123456784로 반올림해야하지만 123456788.000000000001 (첫 번째 0이 아닌 숫자 앞에 0이있는 숫자는)을 반올림하여 123456792로 반올림해야한다는 점에 유의할 필요가 있습니다 후자의 숫자를 임의의 정밀도로 실제로 평가하는 대신 좋은 float 파서는 일반적으로 0이 아닌 숫자가 값을 반올림하여 강제로 0이 아닌 숫자를 볼 때까지 0을 던져 버리는 경우를 식별합니다. 숫자 표현의 끝. – supercat