如何将双精度值四舍五入到2个小数点?

sqserrrh  于 2021-07-03  发布在  Java
关注(0)|答案(8)|浏览(416)

这个问题在这里已经有答案了

8年前关门了。
可能重复:
在java中,将双精度舍入到小数点后两位
我想把这个双精度值四舍五入到小数点后2位。
例如:我有双d=2;结果应该是result=2.00

roqulrg3

roqulrg31#

import java.text.DecimalFormat;

public class RoundTest {
    public static void main(String[] args) {
        double i = 2;    
        DecimalFormat twoDForm = new DecimalFormat("#.00");
        System.out.println(twoDForm.format(i));
        double j=3.1;
        System.out.println(twoDForm.format(j));
        double k=4.144456;
        System.out.println(twoDForm.format(k));
    }
}
ndh0cuux

ndh0cuux2#

您也可以使用此代码

public static double roundToDecimals(double d, int c)  
{   
   int temp = (int)(d * Math.pow(10 , c));  
   return ((double)temp)/Math.pow(10 , c);  
}

它可以让你控制点后需要多少数字。

d = number to round;   
c = number of decimal places

我觉得会有帮助

j2cgzkjk

j2cgzkjk3#

double RoundTo2Decimals(double val) {
            DecimalFormat df2 = new DecimalFormat("###.##");
        return Double.valueOf(df2.format(val));
}
n3h0vuf2

n3h0vuf24#

Math.round(number*100.0)/100.0;
fd3cxomn

fd3cxomn5#

2和2.00之间的内部表示没有区别。你可以用 Math.round 要将一个值四舍五入到最接近的整数-要将该值四舍五入到小数点后2位,可以先乘以100,再四舍五入,然后再除以100,但由于二进制浮点运算的性质,您不应该期望结果正好是2dps。
如果您只想将值格式化为两位小数,请查看 DecimalFormat -如果你在计算的时候对小数位数感兴趣的话,你真的应该使用 BigDecimal . 这样你就会知道你真正在处理的是十进制数字,而不是“最接近的可用数字” double 价值观”。
如果您总是处理两个小数位,您可能需要考虑的另一个选项是将值存储为 long 或者 BigInteger ,知道它正好是“真实”价值的100倍——例如,有效地存储美分而不是美元。

yfjy0ee7

yfjy0ee76#

我想你需要一个格式化的输出。

System.out.printf("%.2f",d);
4zcjmb1e

4zcjmb1e7#

public static double addDoubles(double a, double b) {
        BigDecimal A = new BigDecimal(a + "");
        BigDecimal B = new BigDecimal(b + "");
        return A.add(B).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
bxjv4tth

bxjv4tth8#

这样就行了。

public static void main(String[] args) {
        double d = 12.349678;
        int r = (int) Math.round(d*100);
        double f = r / 100.0;
       System.out.println(f);
     }

你可以缩短这个方法,它很容易理解,这就是为什么我这样写。

相关问题