在我的Java编程教科书中,一节描述“注意任何双值x都可以使用(int)(x + 0.5)向上舍入为整数。”
这是真的吗?
如果为x插入3.4,则该值将返回3并且不会向上舍入,因为整数数据类型向下舍入。也许我只是没有正确理解它。
提前致谢。
答案 0 :(得分:0)
注意任何双值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
,导致意外结果。
进一步阅读: