[英]How can I convert String to Double without losing precision in Java?
[英]How can I convert a double to a string without notation and with a high amount of accuracy in Java?
我正在嘗試將雙精度轉換為沒有符號的字符串,並嘗試了這個:
f= Double.valueOf(c.getString(c.getColumnIndex(NotesDbAdapter.KEY_VALUE)));
NumberFormat formatter = new DecimalFormat("###.##############");
但是,7 ^ 3 ^ 7的值返回為:558546000000000000反對558545864083284007。一如既往的幫助將不勝感激。
您已將值作為String。 為什么要將它轉換為雙倍?
你無法從一個它無法容納的雙精度中獲得精確度。 558545864083284007
有18位小數。 double
精度為53位二進制精度,大約為15.9十進制數。 谷歌“每個計算機科學家都應該了解浮點數”。
###.##############
不適合558545864083284007
格式化掩碼。
如果您已經有字符串格式的巨大十進制數,請嘗試使用BigDecimal
類,如下所示:
BigDecimal bigDecimalValue = new BigDecimal("1234567890123456789012345678901234567890.54321");
LOGGER.info("bigDecimalValue: {}", bigDecimalValue.toPlainString());
您應該恢復原始值而不會出現精度損失:
bigDecimalValue: 1234567890123456789012345678901234567890.54321
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.