첫 번째 예제가 잘못된 결과를 인쇄하는 이유는 무엇입니까?Perl 모듈러스 연산자 질문
perl -le 'print $x = 100*1.15 % 5'
4
perl -le 'print $x = 1000*1.15 % 5'
0
첫 번째 예제가 잘못된 결과를 인쇄하는 이유는 무엇입니까?Perl 모듈러스 연산자 질문
perl -le 'print $x = 100*1.15 % 5'
4
perl -le 'print $x = 1000*1.15 % 5'
0
부동 소수점 연산 때문입니다.
print $x = int(100*1.15);
는 당신에게 114
반올림을 제공합니다. 컴퓨터는 실제 소수 자리를 완벽하게 표현할 수 없으므로 대략적인 수치입니다. 내 컴퓨터에서 perl -le 'print $x = (100*1.15)-115'
은 결과가 -1.4210854715202e-14
인데, 이는 100*1.15
이 거의 비슷하지만 115는 아님을 의미합니다.
이것은 PHP에서도 발생합니다. 파이썬은 5.0 (yep, % 5 = 5.0)이라고 말합니다. – NullUserException
@NullUserException : tnanks. 파이썬 쉘은 부동 소수점 연산의 결과를 테스트하기에 좋다 :-) –
그래서 루비. 루비가 나에게 말한다 4.999999 – NullUserException