如何在没有四舍五入的情况下获得准确的值

时间:2014-05-26 09:18:48

标签: java

使用java我需要计算1 /(2 ^ 50)

的值

我的价值为0.0000000000000008881784197001252

但确切的价值是 0.00000000000000088817841970012523233890533447265625

我使用了power function和divison operator。

2 个答案:

答案 0 :(得分:0)

您可以使用NumberFormat并执行以下操作:

import java.text.NumberFormat;
NumberFormat nf = NumberFormat.getNumberInstance(); 
nf.setMinimumFractionDigits(0);
nf.setMaximumFractionDigits(5);
System.out.println(nf.format(VariableHere));

这会将数字设置为至少有0位小数,最多为5,然后打印出重新格式化的数字。

答案 1 :(得分:0)

非常接近this问题

    BigDecimal bi1 = new BigDecimal("2").pow(50);
    BigDecimal bi2 = BigDecimal.ONE;

    BigDecimal bi3 = bi2.divide(bi1);
    System.out.println(bi3);

提供输出8.8817841970012523233890533447265625E-16

但如果你不会避免这种表示法并获得纯数字,你可以添加

    NumberFormat nf = NumberFormat.getNumberInstance();
    nf.setMinimumFractionDigits(0);
    nf.setMaximumFractionDigits(100);
    System.out.println(nf.format(bi3));

它将提供准确的输出0,00000000000000088817841970012523233890533447265625