【发布时间】:2014-09-12 08:13:34
【问题描述】:
这是一个经典问题:您的遗留代码在应该使用 n 整数时使用了浮点数。但是,在代码中更改该变量(或多个)的每个实例是昂贵的。因此,您需要编写自己的舍入函数,该函数采用一堆参数来提高准确性并转换为整数。
那么,基本的问题是,浮点数在java中是如何四舍五入的?经典的例子是 0.1,通常被引用为四舍五入到 0.0999999999998(或类似的值)。但是,当在 Java 中给定一个整数时,浮点数是否总是向下舍入到它可以表示的下一个值?它是否会舍入其内部尾数以有效舍入其绝对值?还是只选择整数和新浮点数之间误差最小的值?
当字符串是像"1234567890" 这样的整数时,调用Float.parseFloat(String) 时的行为是否也不同?当 String 是一个比 Float 可以存储的精度更高的浮点时,行为是否也一样。
请注意,我使用浮点数或引用浮点数,我将其与 Double 互换使用。与整数和长整数相同。
【问题讨论】:
-
转换为浮点数时不需要“四舍五入”整数。最坏的情况是整数中的有效位数超过浮点数形式的小数位数,但这只是相当大的数字的问题。
标签: java floating-point numbers rounding