java - 如何用零刻度舍入 BigDecimal
问题描述
我有一个 BigDecimal
262727.00 / 48 = 5473.479166666666667
BigDecimal value = new BigDecimal("5473.479166666666667");
value = value.setScale(0, RoundingMode.HALF_EVEN);
System.out.println(value.toString());
我希望得到 5474,但我得到了 5473。有人知道如何获得 5474 的数字吗?
谢谢
解决方案
RoundingMode.HALF_EVEN
向“最近的邻居”四舍五入。.479比1更接近0,因此向下舍入。
根据您需要调用setScale()
两次的注释,一次获取最接近的小数,然后是最接近的数字
value = value.setScale(1, RoundingMode.HALF_EVEN).setScale(0, RoundingMode.HALF_EVEN);
推荐阅读
- rust - 如何更改路径的文件名而不更改其目录或扩展名?
- reactjs - 无法编辑在通用表单组件中传递的状态对象
- terraform - 如何使用 Terraform 为 ECS 配置不同类型的部署
- java - 应用程序在从应用程序模块调用库模块的活动时崩溃
- java - 根据数字 id 获取对象
- javascript - 每种编程语言的内存结构是否不同?
- html - 如何在引导程序 3 的 div 中间放置一个按钮?
- java - 制作一个胖 jar 文件并添加依赖项 - Eclipse IDE
- r - 将多个文本标签添加到单个 facet_grid 面板
- javascript - 我有一个飞扬的小鸟游戏的开始 - 画布无法渲染/显示