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