这是一个经典问题:你的遗留代码使用浮点数,但实际上应该使用整数。但是,更改代码中每个变量(或多个变量)太过昂贵。因此,您需要编写自己的舍入函数,它需要一堆参数来提高精度并转换为整数。
所以,基本问题是,在Java中制作浮点数时如何进行四舍五入?经典示例是0.1,通常被引用为四舍五入到0.0999999999998(或类似的值)。但是,当给定整数时,浮点数是否总是向下舍入到它可以表示的下一个值?它是否将其内部尾数向下舍入以有效地舍入其绝对值?还是只选择整数和新浮点数之间误差最小的值?
当调用“Float.parseFloat(String)”时,如果字符串是整数,例如“1234567890”,行为是否不同?当字符串是比Float可以存储的精度更高的浮点数时,行为是否也相同?
请注意,我在使用浮点数或引用Float时,会交替使用Double。整数和长整数也是如此。
所以,基本问题是,在Java中制作浮点数时如何进行四舍五入?经典示例是0.1,通常被引用为四舍五入到0.0999999999998(或类似的值)。但是,当给定整数时,浮点数是否总是向下舍入到它可以表示的下一个值?它是否将其内部尾数向下舍入以有效地舍入其绝对值?还是只选择整数和新浮点数之间误差最小的值?
当调用“Float.parseFloat(String)”时,如果字符串是整数,例如“1234567890”,行为是否不同?当字符串是比Float可以存储的精度更高的浮点数时,行为是否也相同?
请注意,我在使用浮点数或引用Float时,会交替使用Double。整数和长整数也是如此。