当前位置: 技术问答>java相关
Math类的问题
来源: 互联网 发布时间:2015-04-28
本文导语: float e = -2147483650.6f; System.out.println(Math.round(e)); 为什么结果会是-2147483648. Math.round()方法不是相当于Math.floor(e+0.5d)吗? | float/double这些本来就是不精确的,运算时会有误差的。你这个情况,如...
float e = -2147483650.6f;
System.out.println(Math.round(e));
为什么结果会是-2147483648.
Math.round()方法不是相当于Math.floor(e+0.5d)吗?
System.out.println(Math.round(e));
为什么结果会是-2147483648.
Math.round()方法不是相当于Math.floor(e+0.5d)吗?
|
float/double这些本来就是不精确的,运算时会有误差的。你这个情况,如果用double会好些,因为double比float精确一点。如果要求完全精确,可以用BigDecimal类。
|
大于了long.MAX_VALUE,所以这样啊!
|
idpmud正解。
同意jimjxr“如果要求完全精确,可以用BigDecimal类”。
同意jimjxr“如果要求完全精确,可以用BigDecimal类”。