在Java中使用double值舍入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中使用double值舍入相关的知识,希望对你有一定的参考价值。
在我的Java编程教科书中,一节描述:“注意任何双值x都可以使用(int)(x + 0.5)向上舍入为整数。”
这是真的?
如果为x插入3.4,则该值将返回3并且不会向上舍入,因为整数数据类型向下舍入。也许我只是没有正确理解它。
提前致谢。
答案
注意任何双值x都可以使用(int)(x + 0.5)向上舍入为整数
这在理论上是正确的,并且如果浮点数具有无限精度,则在实践中也是如此。
理论上:
value value+0.5 (int)(value+0.5)
3.1 3.6 3
3.499 3.999 3
3.5 4.0 4
3.501 4.001 4
事实上,事情并不是那么整洁,因为浮动点的精度有限,你可以进入这样的情况:
actual value stored as value+0.5 (int)(value+0.5)
123123.49999 12123.5 12124.0 12124
123123.50000 12123.5 12124.0 12124
123123.50001 12123.5 12124.0 12124
其中第一个值不能表示为float
,最近的浮点数是12123.5
,导致意外结果。
进一步阅读:
以上是关于在Java中使用double值舍入的主要内容,如果未能解决你的问题,请参考以下文章
即使在 C 中使用“\n%.2f”后,也无法将浮点值舍入到最接近的第二个小数 [关闭]
R:将 p 值舍入到 xtable 中的两位有效数字,并将 ReporteRs 导出到 Latex/Office/LibreOffice