2016-09-21 4 views
1

0.3을 Chrome 콘솔에 입력하면 0.3이 나에게 다시 인쇄됩니다.자바 스크립트에서 0.3의 리터럴 표현

이것은 기본적으로 말합니다. "내용이 0.3 인 숫자 리터럴을 입력하고 편의상 콘솔에 다시 표시합니다. 실제로는 표현할 수 없지만 실제로 표현할 수는 없습니다. 내가 얻을 수있는 가장 좋은 근사값은 0.30000000000000004 "입니까?

답변

2

실제로, internal representation 그것은 17 개 개의 유효 숫자로 반올림 내부 값을 0.29999999999999999 인쇄 수도

0.299999999999999988897769753748434595763683319091796875

이다. 반올림하여 17 digits is the conservative way to preserve any internal value. 그러나이 경우에도 0.3이 작동합니다 (결국, 처음 시작한 것입니다). 인쇄 된 것이 더 짧기 때문에 0.3도 작동합니다.

그래서 문자열 입력을 되풀이하지 않았습니다. 이렇게하면 (15 자리 이하의 모든 입력 에서처럼) 효과가있었습니다.

+0

'0.1 + 0.2'는 '0.100'과 '0.2'표현의 오류가 결합되어 17 자리 유효 숫자로 반올림되었을 때 '0.30000000000000004'가되므로 '0.30000000000000004'입니다. – Ben

+0

@BenAston : 예. [배정도 값을 다시 만들 수있는 더 짧은 문자열은 없습니다.] (http://www.exploringbinary.com/java-doesnt-print-the-shortest-strings-that-round-trip/). –

관련 문제