当前位置: 首页 > 知识库问答 >
问题:

Java BigDecimal除法和乘法,四舍五入到2位小数

寿子默
2023-03-14

我有一个Java BigDecimal表达式,如下所示:

(totalPrep.divide(totalCase, 2, BigDecimal.ROUND_HALF_UP)).multiply(new BigDecimal(100))

哪里

BigDecimal totalCase = BigDecimal。零;BigDecimal totalPrep = BigDecimal。零;

我必须将totalPrep除以totalCase,结果乘以100,得到以%表示的结果值。66.6666666666666666666666666666666666667

假设总准备是二进制2,toalCase是3,那么数学结果是66。6666666666666666666666666666666666667。我想把它归结为小数点后两位66.67%

有什么建议吗?

共有1个答案

吕利
2023-03-14

如果你想让 2 / 3 得到 66.67,你需要先乘法,然后除法并四舍五入到小数点后 2 位:

java prettyprint-override">BigDecimal totalPrep = BigDecimal.valueOf(2);
BigDecimal totalCase = BigDecimal.valueOf(3);

BigDecimal result = totalPrep.multiply(BigDecimal.valueOf(100))
                             .divide(totalCase, 2, RoundingMode.HALF_UP);

System.out.println(result); // prints: 66.67

这将计算2*100=200,然后200/3=66.67(四舍五入)

当你首先除法时,你计算2/3=0.67(四舍五入),然后0.67*100=67.00,这显然不是你想要的。

 类似资料:
  • 获取以下数字集--> 当相加时,这些给出一个整数。

  • 我如何四舍五入到两个小数位?

  • 问题内容: 因此,我有一些代码可以通过将“理想”屏幕的大小除以用户屏幕的大小来将图形缩放到用户屏幕的大小。她是我在做什么的代码片段: 现在,如果我在计算机上(屏幕分辨率为1440x900的Mac Book pro)运行此程序,结果是“ scaleFactorWidth”设置为2.0,而“ scaleFactorHeight”设置为2.0,这是预期的,因为我的屏幕正好是一半目标的大小。但是,如果在具

  • 问题内容: 如果值为,则应将其格式化为。如果是,那么应该是。 问题答案: 这是一个实用程序,可以将双精度舍入(而不是截断)双精度至小数位数。 例如: 原始版本;提防这个 这在小数位数很高(例如)或整数部分很大(例如)的极端情况下会严重崩溃。感谢Sloin指出这一点。 多年来,我一直在使用上面的方法将“不太大”的双精度取整到2或3个小数位(例如,以秒为单位的清理时间用于记录目的:27.9876543

  • 我已经阅读了很多stackoverflow问题,但似乎没有一个对我有效。我正在使用<code>数学。round()进行舍入。这是代码: 我得到的输出是:< code>123,但我希望它是< code>123.14。我知道添加< code>*100/100会有所帮助,但是正如你所看到的,我并没有设法让它工作。 输入和输出都是双份绝对是必不可少的。 如果您更改上述代码的第4行并发布它,那将是很大的帮助

  • 我对java相当陌生,我必须创建这个程序,我不知道从哪里开始。有人能帮我做什么,以及如何写代码开始吗? 编写一个模拟收银机的程序。提示用户输入三件商品的价格。将它们相加以获得小计。确定小计的税额(6%)。查找销售小计加税额的总额。显示每件商品的价格、小计金额、税额和最终金额。 到目前为止,我有这个: 输出(如果价格为price1=1.65,price2=2.82和price3=9.08美元)如下所