gpt4 book ai didi

Java DecimalFormat 向下舍入

转载 作者:行者123 更新时间:2023-12-01 19:48:41 25 4
gpt4 key购买 nike

我正在使用 DecimalFormatter 读取格式化的十进制字符串值并将其转换为 float 。但是,当我运行时:

    DecimalFormat formatter = new DecimalFormat("####,####.00");
String floatStr = "177,687.71";
float val1 = formatter.parse(floatStr).floatValue();
System.out.println(val1);

...我得到 177678.7 而不是 177678.71。为什么是这样?如何避免四舍五入到百分之几?

谢谢!

最佳答案

您似乎需要比 float 更高的精度来表示该数字。

将格式化程序从图片中删除:

Float.parseFloat("177687.71");
177687.7 // Ouch

Double.parseDouble("177687.71");
177687.71 // Ok

看来您需要使用 double 。

如果这是为了代表金钱,尽管正如 @Dawood 所建议的那样,那么是的,不要使用 float 类型来代表金钱,因为它们是估计值,并且会随着时间的推移累积错误。像 BigDecimal 这样的格式会更合适,甚至只存储代表分的整数。金钱不是您想要遭受舍入误差的东西。

关于Java DecimalFormat 向下舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52248168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com