有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

格式化在Java中如何将double转换为无符号且具有高精度的字符串?

我正在尝试将double转换为不带符号的字符串,并尝试了以下操作:

f= Double.valueOf(c.getString(c.getColumnIndex(NotesDbAdapter.KEY_VALUE)));  
NumberFormat formatter = new DecimalFormat("###.##############");  

但是,7^3^7的值返回为:5585460000000,而不是55854586408328407。如能一如既往地给予帮助,我们将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    如果您已经有了字符串格式的巨大十进制数,请尝试使用BigDecimal类,如下所示:

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

    您应该在不损失精度的情况下恢复原始值:

    bigDecimalValue: 1234567890123456789012345678901234567890.54321
    
  2. # 2 楼答案

    1. 您已经将该值设置为字符串。为什么要把它转换成双倍呢

    2. 你无法从一个无法承受的双精度中获得精确性558545864083284007有18个十进制数字。Adouble有53位二进制精度,约为15.9位十进制数字。谷歌搜索“每个计算机科学家都应该知道的浮点运算”

    3. ###.##############不是适用于558545864083284007的格式掩码