Я работаю над реализацией программы имитации отжига, и часть этого включает в себя вычисление оценок из файла .txt, который читает моя программа Java.
1) от пользователя считывается входная строка. Чем длиннее моя входная строка, тем вероятнее следующее исключение ниже
2) вычисляемая оценка, по сути, добавляет много десятичных чисел, и я сохраняю ее в «двойной» переменной.
Может кто-нибудь, пожалуйста, сообщите мне, почему такое исключение может произойти?
Оценка от Hill Swap: 0,24874990000000005 После подкачки... Исключение в потоке "main" java.lang.NumberFormatException: Для входной строки: "7.92066E-" в sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
Спасибо большое!
0.01 + 0.09
: это не0.1
). Это делает удвоения непригодными для научных или финансовых расчетов. Моделирование отжига в Drools Planner поддерживает использование альтернативных реализаций Score, таких какBigDecimal
(который не имеет ошибок округления, но работает медленнее). - person Geoffrey De Smet   schedule 28.04.2011