1

我正在執行一個模擬退火程序,其中一部分涉及從我的java程序讀取的.txt文件計算得分。這個異常是什麼意思?

1)從用戶讀取輸入字符串。時間越長我的輸入字符串,越有可能出現以下異常下方出現

2)計算基本上是加入了大量的十進制數的分數,我把它保存在一個「雙」變量。

可有人請告訴我爲什麼會發生這樣的異常?從希爾交換

得分: 0.24874990000000005後交換...異常線程 「main」 java.lang.NumberFormatException:對於 輸入字符串: 「7.92066E-」 在sun.misc.FloatingDecimal.readJavaFormatString (FloatingDecimal.java:1224)

非常感謝!

+0

雙打有四捨五入錯誤(只是嘗試'0.01 + 0.09':它不是'0.1')。這使得雙打不適合進行科學或財務計算。 [Drools Planner](http://www.jboss.org/drools/drools-planner)的模擬退火支持使用替代Score實現,例如'BigDecimal'(它沒有舍入誤差但速度較慢)。 – 2011-04-28 09:36:42

回答

7

這意味着你的程序試圖解析字符串「7.92066E-」這不是可解析爲double。

您應該檢查在此字符串是來自(堆棧跟蹤的其餘部分應該告訴你),並確保你沒有沿線某處得到無效數據。

+2

其無效的,因爲你缺少了一些大腸桿菌後它應該是這樣的7.92066E042- – 2011-04-28 01:56:25

+0

非常感謝,您的答案是正確的確實有在類型7.92066E-5的我的數據文件編號。這導致了問題,因爲我過早停止閱讀。問題現在將被修復。謝謝! – Roy 2011-04-28 02:26:17