java - java中的四舍五入价格数字

标签 java rounding

<分区>

我是 Java 编程的新手。我想以 5 的倍数将价格四舍五入到最接近的小数点后两位。

例如

  • 38.80 保持不变。
  • 38.8138.80
  • 38.8238.80
  • 38.8338.85
  • 38.8438.85
  • 38.85 保持不变。
  • 38.8638.85
  • 38.8738.85
  • 38.8838.90
  • 38.8938.90
  • 38.90 保持不变。

我尝试了提供的副本,但它们只显示到小数点后一位。 例如。 38.8238.8

这是我的代码:

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));
    }
}

我已经研究了该网络中专家的其他模型答案,但没有一个能真正回答我的问题。设置为小数点后两位,我使用的是 DemicalFormat。我知道,但四舍五入,假设 38.83 到 38.85 和 38.87 到 38.90 是我真正想要的。 这是我国正在使用的舍入系统。可以看看here .

**

This question has been answer by @Mureinik double rounded = Math.round(num * 100.0 / 5.0) * 5.0 / 100.0;

**

最佳答案

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

然后就是

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

可以引用Javadocs for ROUND_HALF_UPsetScale

关于java - java中的四舍五入价格数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30635669/

相关文章:

azure - 如何在azure逻辑应用程序中将 float 四舍五入为小数点后两位?

java - 无法处理导航 fragment 中的后退按钮

java - OptaPlanner CVRPTW - 持续交付

java - 如何在 JUnit spring 测试中只 Autowiring 一个特定的类?

java - 用于 mongodb fetch 的可扩展 spring 调度程序

java - 错误 HttpClient 无法解析为类型

mysql - 始终将设置的秒/分钟/小时舍入为 00 mysql

javascript - 任何人都可以详细说明 JavaScript 中的数字精度和溢出吗?

rust - LLVM 优化器不尊重使用 Rust 内联 asm 设置非默认舍入模式?

php - 将价格舍入到下一个 5 或 10 个百分点