And*_*ner 11 java floating-point
根据Javadoc:
Run Code Online (Sandbox Code Playgroud)public static double nextAfter(double start, double direction)...
- 如果start等于±Double.MAX_VALUE并且direction具有一个值,使得结果应该具有更大的幅度,则返回具有与start相同的符号的无穷大.
但根据这个例子:
System.out.println(Double.MAX_VALUE);
System.out.println(Math.nextAfter(Double.MAX_VALUE, 1));
System.out.println(Math.nextAfter(Double.MAX_VALUE, 1) == Double.POSITIVE_INFINITY);
Run Code Online (Sandbox Code Playgroud)
输出:
1.7976931348623157E308
1.7976931348623155E308
false
Run Code Online (Sandbox Code Playgroud)
嗯?它不仅不是Double.POSITIVE_INFINITY,它的数量实际上更小.
...157E308
...155E308
Run Code Online (Sandbox Code Playgroud)
我只是完全误读了Javadoc吗?
Bat*_*eba 12
这些文档具有误导性.
的方向参数需要是更大的比Double.MAX_VALUE为返回值具有较大的结果.
由于1较小,因此输出是您提供的浮点数之前的浮点数.
C++的文档(下IEEE754)更清晰,甚至明确说明这一边缘情况:http://en.cppreference.com/w/cpp/numeric/math/nextafter
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |