Так как «обычные» калькуляторы могут неправильно ответить на такие вопросы, иногда неясно, что действительно решит вашу проблему.Если вы настраиваете автоматический арифметический тест, чтобы увидеть, могут ли люди получить правильный ответ, то, возможно, вам следует проверить, согласен ли он до некоторой терпимости.
(примеры для вашего калькулятора можно построить, рассчитав вариации 1,0 / 3,0, а затем умножив на 3. Вы можете получить 0,9999 .... Некоторые калькуляторы округляются лучше, чем другие, поэтому примеры должны быть немного более тонкимиКак 1.0 / 30.0 X 30.0)
Возвращаясь к Maxima, вы можете проверить, есть ли abs (ab) <допуск или, возможно, abs ((ab) / max (a, b)) <относительная толерантность.</p>
Теперь, если то, что действительно решило бы вашу проблему, это просто меньшая точность в OUTPUT, вы можете просто установить fpprintprec: 5, чтобы получить 5 десятичных цифр (округлено).
Альтернативой является чтение ваших чиселтак что 3.1 фактически никогда не преобразуется в двоичный файл, но первоначально анализируется как 3 + 1/10.С этого момента вся рациональная арифметика может быть выполнена точно.(Рациональная арифметика не включает в себя квадратные корни, логарифмы, косинус ..., просто + - * / и целые числа).Сейчас это не часть Maxima.
Кстати, ваш пример 0.1 + 0.2 отображается как 0.3 на дисплее wxmaxima.Но это скрывает фактическое значение, потому что% -3 / 10 на самом деле не ноль.игра с fpprec: 50;мы можем представить 0.3, все еще в двоичном виде, но намного больше цифр, набрав 0.3b0.
0.1 + 0.2-0.3b0;дает 4.440892098500626161694526672363281263363823550461b-17
ой, если вас беспокоят сообщения о том, что Maxima преобразует числа с плавающей точкой в рациональные числа, установите ratprint: false.Это не меняет вычисления, только предупреждения.