舍入价格在java中

时间:2015-06-04 05:34:26

标签: java rounding

我是java编程的新手。我想用5的倍数将价格四舍五入到最近的2位小数。

例如

  • "\u20B9"保持不变。
  • 38.8038.81
  • 38.8038.82
  • 38.8038.83
  • 38.8538.84
  • 38.85保持不变。
  • 38.8538.86
  • 38.8538.87
  • 38.8538.88
  • 38.9038.89
  • 38.90保持不变。

我尝试了提供的重复项,但它们只出现在小数点后1位。 例如。 38.9038.82

这是我的代码:

38.8

我已经在本网站的专家看过其他模型答案,但没有一个真正回答我的问题。设置为2位小数,我正在使用import java.text.DecimalFormat; public class RoundUp { public static void main(String[] args){ DecimalFormat df = new DecimalFormat("#.##"); double num = 38.84; System.out.println(df.format(Math.round(num*10.00)/10.00)); } } 。我知道,但数字四舍五入,让我们说38.83到38.85和38.87到38.90是我真正想要的。 这是我国正在使用的舍入系统。可以查看here

**

  

@Mureinik double rounded =已经回答了这个问题   Math.round(num * 100.0 / 5.0)* 5.0 / 100.0;

**

1 个答案:

答案 0 :(得分:1)

我建议你在处理钱时使用BigDecimal而不是double。

然后就像

BigDecimal value = new BigDecimal(38.84);
value = value.setScale(2, BigDecimal.ROUND_HALF_UP)

您可以参考Javadocs for ROUND_HALF_UPsetScale