簡體   English   中英

如何在沒有符號的情況下將double轉換為字符串並且在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。一如既往的幫助將不勝感激。

  1. 您已將值作為String。 為什么要將它轉換為雙倍?

  2. 你無法從一個它無法容納的雙精度中獲得精確度。 558545864083284007有18位小數。 double精度為53位二進制精度,大約為15.9十進制數。 谷歌“每個計算機科學家都應該了解浮點數”。

  3. ###.##############不適合558545864083284007格式化掩碼。

如果您已經有字符串格式的巨大十進制數,請嘗試使用BigDecimal類,如下所示:

    BigDecimal bigDecimalValue = new BigDecimal("1234567890123456789012345678901234567890.54321");
    LOGGER.info("bigDecimalValue: {}", bigDecimalValue.toPlainString());

您應該恢復原始值而不會出現精度損失:

bigDecimalValue: 1234567890123456789012345678901234567890.54321

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM