java - 四舍五入到最接近的小数?BigDecimal 与替代形式
问题描述
我有以下公式和代码:
我尝试了 Math.Floor 和其他人,但我没有得到预期的结果
double netPay = grossPay - totalDeduction;
System.out.printf("Net Pay: $%.2f", (netPay));
想法是按如下方式获取数字:
46.225
四舍五入为 46.22
而不是 46.23
解决方案
正如评论者所说:出于财务目的,请使用 BigDecimal。
除此之外:
double netPayCents = Math.floor(netPay * 100);
netPay = netPayCents / 100d;
为什么使用 BigDecimal?
浮点值(包括双精度值)可能非常精确,但在尝试绝对精确时会出现问题。在大多数数学运算之后,它们总是要进行四舍五入。
有关更多详细信息,请参阅此线程:Double vs. BigDecimal?
推荐阅读
- ios - Enum 中值的模糊使用
- ionic-framework - Ionic CLI V4 看起来这个项目中没有安装 @ionic/v1-toolkit
- ios - iOS:当我们以横向模式启动应用程序时,键盘输入附件视图方向错误
- android - 调用 onNewIntent 获取视图空指针异常
- javascript - 如何从单个反应组件中调用多个 graphql 突变?
- android - 在顶部添加新项目后,回收器视图未滚动到顶部,因为尚未发生对列表适配器的更改
- sql - 从指定坐标获取 5 英里范围内的所有建筑物
- java - 在 Idea Ultimate 上测试 IntelliJ 插件
- ruby-on-rails - Rails NoMethodError:未定义的方法 `method_name' 用于#