我目前正在研究java中的一个程序,它需要在一个双变量ex中添加一个小的常量值,如0.00000000001.地点.但是,当我运行代码,调试它,并到达我将0.00000000001添加到位置的位置,并在添加发生后检查调试模式中的位置值.看来该位置没有添加0.00000000001.例如,位置在添加前等于438.0,在添加后等于438.0.以下是简单代码的示例
location + = 0.00000000001
有任何想法吗?提前致谢.
由于Java的存储方式,许多双精度值在Java中并不完全精确.精确精度仅适用于某些值.这是因为Java只能存储十进制值作为许多2 ^ n(s)的组合.
例如:1/4可以存储为2^-2,但1/3将存储为2^-2 + 2^-3+ 2^-4 +2^-5...,因此1/3是一个不完全精确的值的示例
如果需要精确值,请使用以下BigDecimal类:
http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html
您需要使用BigDecimal以获得更好的精度.
例:
BigDecimal test = new BigDecimal(438.0);
test = test.add(new BigDecimal(0.0000000000001));
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1577 次 |
| 最近记录: |