1
저는 gambit-c intepreter를 사용하여 스킴 산술 연산을 평가하지만 그 결과는 비트 오프입니다. 예를 들어 (+ 23 20.01)을 실행하면 43.01 대신 43.010000000000005가됩니다.갬윗 스킴이 십진수가있는 숫자에 대한 계산이 올바르지 않습니다.
소수점 2 자리 숫자를 사용하는 경우에만 발생합니다.
수정 사항이 있습니까?
저는 gambit-c intepreter를 사용하여 스킴 산술 연산을 평가하지만 그 결과는 비트 오프입니다. 예를 들어 (+ 23 20.01)을 실행하면 43.01 대신 43.010000000000005가됩니다.갬윗 스킴이 십진수가있는 숫자에 대한 계산이 올바르지 않습니다.
소수점 2 자리 숫자를 사용하는 경우에만 발생합니다.
수정 사항이 있습니까?
부동 소수점 연산이 수행되는 방법과 관련이 있습니다. What Every Programmer Should Know About Floating-Point Arithmetic을 읽어주십시오.
운이 좋다! 계획에서는 정확한 숫자를 사용하여이 문제를 해결 :
(exact->inexact (+ 23 #e20.01)) ; ==> 43.01
:
(+ 23 #e20.01) ; ==> 4301/100
당신은이 부정확로 만들 수 있습니다