Sil*_*ker 7 java floating-point double
我在Java中执行计算时遇到了一些困难.这是我想要做的 -
((0.053800 * (500000/1000)) + 4) * 0.85
在我的java应用程序中,它返回26.264999999999997,如果你向上舍入到2位小数,则变为26.26.
但在MS Excel中,相同的公式返回26.265000 ..因此舍入结果为26.27.
如果我的Java应用程序返回的值不正确,我该怎么做才能纠正它?
以下是一个更好的近似值,在这种情况下会产生相同的值:
import java.math.BigDecimal;
import java.math.MathContext;
public class Test {
public static void main(String[] args) {
//double d = ((0.053800 * (500000/1000)) + 4) * 0.85;
BigDecimal d = ((new BigDecimal(0.053800).multiply(new BigDecimal(500000).divide(new BigDecimal(1000)))).add(new BigDecimal(4))).multiply(new BigDecimal(0.85));
System.out.println(d.round(MathContext.DECIMAL32));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5109 次 |
| 最近记录: |