Неправильный расчет схемы гамбита для чисел с десятичными знаками

Я использую Gambit-C Intepreter для оценки арифметических операций схемы, но его результаты немного не соответствуют. например, я выполняю (+ 23 20.01), и это дает мне 43.010000000000005 вместо 43.01.

Это происходит только в том случае, если я использую числа с 2 десятичными знаками.

можно ли это исправить?

1 ответ

Решение

Это связано с тем, как выполняются вычисления с плавающей запятой. Пожалуйста, прочтите то, что должен знать каждый программист об арифметике с плавающей точкой.

Вам повезло! В Схеме вы исправите это, используя точные числа:

(+ 23 #e20.01) ; ==> 4301/100

Вы можете сделать это неточно с:

(exact->inexact (+ 23 #e20.01)) ; ==> 43.01
Другие вопросы по тегам