Неправильный расчет схемы гамбита для чисел с десятичными знаками
Я использую Gambit-C Intepreter для оценки арифметических операций схемы, но его результаты немного не соответствуют. например, я выполняю (+ 23 20.01), и это дает мне 43.010000000000005 вместо 43.01.
Это происходит только в том случае, если я использую числа с 2 десятичными знаками.
можно ли это исправить?
1 ответ
Решение
Это связано с тем, как выполняются вычисления с плавающей запятой. Пожалуйста, прочтите то, что должен знать каждый программист об арифметике с плавающей точкой.
Вам повезло! В Схеме вы исправите это, используя точные числа:
(+ 23 #e20.01) ; ==> 4301/100
Вы можете сделать это неточно с:
(exact->inexact (+ 23 #e20.01)) ; ==> 43.01