Java 如何在不舍入的情况下获得精确值

Java 如何在不舍入的情况下获得精确值,java,Java,使用java,我需要计算1/(2^50)的值 我得到的值为0.0000000000000008881784197001252 但确切的价值是 0.00000000000000088817841970012523233890533447265625 我使用了幂函数和除数运算符。您可以使用数字格式并执行以下操作: import java.text.NumberFormat; NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMini

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

我得到的值为0.0000000000000008881784197001252

但确切的价值是 0.00000000000000088817841970012523233890533447265625


我使用了幂函数和除数运算符。

您可以使用数字格式并执行以下操作:

import java.text.NumberFormat;
NumberFormat nf = NumberFormat.getNumberInstance(); 
nf.setMinimumFractionDigits(0);
nf.setMaximumFractionDigits(5);
System.out.println(nf.format(VariableHere));
这会将数字设置为最小0位小数,最大5位小数,然后打印出重新格式化的数字。

非常接近问题

给出输出
8.8817841970012523233890533447265625E-16

但是,如果你不想避免这种符号,得到纯数字,你可以加上

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

它将给出一个精确的输出
0000000000000000 88817841970012523233890533447265625

您可以使用
BigDecimal
。因为有很多主题都涉及到这个问题,所以被否决。了解如何使用Java API:String s=bi3.toPlainString();系统输出打印项次;这将给出准确的输出。。。
    NumberFormat nf = NumberFormat.getNumberInstance();
    nf.setMinimumFractionDigits(0);
    nf.setMaximumFractionDigits(100);
    System.out.println(nf.format(bi3));