Dar*_*rko 2 floating-point precision algebra
也就是说,如果我有两个浮点数(IEEE-754二进制浮点数)a和b,我计算c如下:
c = a - b
Run Code Online (Sandbox Code Playgroud)
这总是真的吗?
c + b == a
Run Code Online (Sandbox Code Playgroud)
这个简单问题的答案出奇地难以在互联网上找到答案。我找到的最接近的东西是这篇论文。也许我只是没有使用正确的术语。
您肯定需要添加一些排除溢出的条件。这个java程序打印“false”。
public strictfp class Test {
public static void main(String[] args) {
double a = Double.MAX_VALUE;
double b = -Double.MAX_VALUE;
double c = a-b;
System.out.println(c+b == a);
}
}
Run Code Online (Sandbox Code Playgroud)
a-b在实数算术中是最大有限双精度的两倍。在浮点运算中,它溢出到无穷大。
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |