Java 如何添加一个非常小的数字和一个非常大的数字
我对Java还很陌生。我现在正在学习数值计算。如何将一个非常小的数字和一个非常大的数字相加和相乘,比如说$10^{-20}$阶和$10^{20}$阶的任意精度 尝试以下操作(不计算零)。您可能会发现构造10^20/10^-20的其他方法更合适Java 如何添加一个非常小的数字和一个非常大的数字,java,precision,numerical-methods,Java,Precision,Numerical Methods,我对Java还很陌生。我现在正在学习数值计算。如何将一个非常小的数字和一个非常大的数字相加和相乘,比如说$10^{-20}$阶和$10^{20}$阶的任意精度 尝试以下操作(不计算零)。您可能会发现构造10^20/10^-20的其他方法更合适 System.out.println( new BigDecimal("0.0000000000000000000000000000001").add( new BigDecimal ("10000000000000000000000000
System.out.println( new BigDecimal("0.0000000000000000000000000000001").add( new BigDecimal
("100000000000000000000000000000000")));
看看这门课。从Javadoc:
不可变、任意精度有符号十进制数
以及:
BigDecimal类为用户提供了对舍入行为的完全控制
例如:
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal big = new BigDecimal("10e20");
BigDecimal small = new BigDecimal("10e-20");
BigDecimal ans = big.add(small);
System.err.println("Answer: " + ans);
}
}
运行会产生以下结果:
$ java Main
Answer: 1000000000000000000000.00000000000000000010
如果double没有足够的精度,您可能需要大的十进制数。虽然我试了两次,但你还是表现出色。然而,它不起作用,因为它只是忽略了少数部分。