繁体   English   中英

如何计算“y”的值到小数点后三位?

[英]How do I calculate the value of `y` to three decimal places?

当分配给变量的值为17/3时,如何计算y的值到小数点后三位。 我需要使用 / 我不能只写出十进制值然后这样计算。

double y = 17/3; 

        DecimalFormat df = new DecimalFormat("#.###");
        System.out.println(df.format(y));

     // Should be 5.666 but the answer is wrong 

尝试使用 17.0 / 3.0 强制双除。

尝试将除法的结果加倍

double y = (double)17/3;

要打印出带有三位小数的双精度数,您可以使用以下DecimalFormat

    DecimalFormat decimalFormat = new DecimalFormat("#,###,##0.000");
    System.out.println(decimalFormat.format(y));

或者,您也可以只使用字符串格式化程序,如下所示:

    System.out.println(String.format("%.3f", y));

或者你甚至可以使用NumberFormat

    NumberFormat nf = NumberFormat.getInstance();
    nf.setMaximumFractionDigits(3);
    System.out.println(nf.format(y));

就在您的除法上,您至少需要将除数转换为双倍,否则您只是在进行 integer 除法。

double y = 17 / (double) 3;

有很多方法可以做到这一点,但有时你不想为每个部门获得三个位置,比如

double d = (double) 6 / 2; // 3.0

所以试试这个: -

Double y = (double) 17 / 3;  
Double d = new     
BigDecimal(y.toString()).setScale(3,RoundingMode.HALF_UP).doubleValue();

两个操作数(17 和 3)是整数,因此使用 integer 算术(此处除法)。 将结果变量声明为 double 只会导致在除法后发生隐式转换。

Integer 除法当然返回四舍五入到零的除法的真实结果。 因此,5.666... 的结果在此处向下舍入为 5。 (请注意,处理器实际上并没有进行任何舍入,但您仍然可以这样想。)

另外,请注意,如果两个操作数(数字)都以浮点数形式给出; 17.0 和 3.0,或者甚至只是第一个,然后使用浮点运算,给你 5.666....

你也可以使用这个:

double value = ((double) x) / y;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM