我有一個地址域,其中有場lat和只要BigDecimal和我使用規模限制爲16.我有這個地址BigDecimal的問題,長和緯度
550 Tremont St, Boston, MA 02116, USA
其長,LAT是 - 71.07126540000002和42.3438919
此地址的經度以-71.0712654000000200存儲在數據庫中。現在我需要將保存的經度與任何新的請求進行比較,以檢查經度是否已經存在。
我再次發送相同的經度-71.07126540000002但我無法將它保存在db(-71.0712654000000200)中的格式轉換爲比較長的格式。地址相同。
我嘗試使用
BigDecimal a = new BigDecimal(-71.07126540000002)
println a.setScale(16, RoundingMode.CEILING) // tried all other RoundingMode
但都給予響應,無論是-71.0712654000000156或-71.0712654000000157,但沒有得到-71.0712654000000200
幫助!
在我看來,這兩個值都有7位數的精度,剩下的只是錯誤。當你有15-16位數的精度時,舍入到16位小數是不合適的。 –
這樣做的確切表示:'BigDecimal a = new BigDecimal(「 - 71.07126540000002」)'。雙打沒有小數部分的確切表示。 –
尋找完全匹配有點荒謬。你給出的數字比相隔一個微米要小几個數量級。出於所有實際原因,這是相同的位置。 – Henry