java - 如何将一个非常小的数字和一个非常大的数字相加

标签 java precision numerical-methods

我对 Java 还很陌生。我现在正在学习数值计算。如何对一个非常小的数和一个非常大的数进行加法和乘法,例如 $10^{-20}$ 阶和 $10^{20}$ 阶的任意精度。

最佳答案

看看BigDecimal类(class)。来自 Javadoc:

Immutable, arbitrary-precision signed decimal numbers.

和:

The BigDecimal class gives its user complete control over rounding behavior.

举个例子:

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

关于java - 如何将一个非常小的数字和一个非常大的数字相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31393584/

相关文章:

r - 在 R 中数值求解 Lotka-Volterra ODE

python - 用Python计算傅里叶系数?

python - Python 中的牛顿法

java - 什么是好的 Java 压缩库?

sql - 如何查询精度过高的美元金额?

javascript - 您可以使用输入类型 "number"来表示任意精度的小数吗?

c# - C# 中的高精度

java - 如何在 Spring MVC 中创建自定义响应处理程序?

java - jstack 抛出异常询问核心

java - 为什么matlab和java的ceil函数不同?