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

爪哇四舍五入价格数字[重复]

易英奕
2023-03-14

我是java编程新手。我想把价格四舍五入到小数点后2位,再加上5的倍数。

如。

  • 38.80保持不变

我尝试了提供的重复项,但它们只出现在小数点后1位。例如。38.82to38.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是我真正想要的。这是我国正在使用的四舍五入制度。你可以在这里查看。

**

这个问题已经由@Mureinik双倍四舍五入=Math.round(num*100.0 / 5.0) * 5.0 / 100.0回答;

**

共有1个答案

谭卜鹰
2023-03-14

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

然后就好像

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

你可以参考JavadocsROUND_HALF_UP和setScale

 类似资料:
  • 问题 你想对浮点数执行指定精度的舍入运算。 解决方案 对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可。比如: >>> round(1.23, 1) 1.2 >>> round(1.27, 1) 1.3 >>> round(-1.27, 1) -1.3 >>> round(1.25361,3) 1.254 >>> 当一个值刚好在两个边界的中间的时候, round

  • 本节讨论了精度数学的四舍五入特性,ROUND()函数,以及插入DECIMAL列时的四舍五入特性。 ROUND()函数的行为取决于其参量是准确的还是近似的: ·对于准确值数值,ROUND()采用“半值向上舍入”规则:如果小数部分的值为.5或更大,如果是正数,向上取下一个整数,如果是负数,向下取下一个整数(换句话讲,以0为界限执行舍入)。如果小数部分的值小于.5,如果是正数,向下取下一个整数,如果是负

  • 问题内容: 我怎么总是将a舍入为一个,而不舍入它。我知道,但是我希望它总是四舍五入。因此,如果为,则四舍五入为4。 问题答案: 您可以使用方法。 请参阅JavaDoc链接:https ://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#ceil(double ) 从文档: 细胞 返回大于或等于自变量且等于数学整数的最小(最接近负无穷大

  • 假设我有一个简单的浮点数数组 [0.315023,1.0,0.12345,0121111] 并称之为arr1。 我需要把这个数组变成这样: [0.3150, 1.0000, 0.1234, 0.1211] *请注意,1.0 现在是 1.0000,0.3150 末尾为 0 我尝试使用for循环遍历数组,并将数字四舍五入如下: // i代表arr1中的一个数字;我们来想象一下,用“newNum”替换a

  • 问题内容: 如何在Java中四舍五入到特定的倍数?在excel中,该函数可以轻松舍入到指定的倍数,如下所示: 所以将返回,如果和如果。 到目前为止,我发现的所有舍入函数都始终舍入到最接近的整数或指定的小数位数,但是我希望能够为每个变量更改倍数。有谁知道哪种功能最适合这种情况? 问题答案: 只需除以数字,四舍五入,然后乘以数字即可。

  • 问题内容: 如何将十进制数四舍五入为整数。 3.50 => 4 4.5 => 5 3.4 => 3 您如何用Java做到这一点?谢谢! 问题答案: 如果只使用正数,也可以使用int i =(int)(d + 0.5)。 编辑:如果您想将负数向上舍入(向正无穷大,例如-5.4变为-5),也可以使用它。如果要舍入到更高的值(将-5.4舍入为-6),建议您使用其他答案提出的其他功能。