我的输出中只需要两个小数位

时间:2017-03-18 19:38:34

标签: java double

如何获得小数点后仅两位数的双精度值。 我收到的输出给我BMI = 23.053626543209877,如果我的身高输入为72,体重为170.我不知道如何摆脱.05后的尾随数字

这是我的代码:

import java.util.Scanner;

public class bmi {

private static Scanner scanner;


public static void main(String[] args) {

    // Variables
    double height; 
    double weight; 
    double bmi; 

    Scanner keyboard = new Scanner(System.in);

    System.out.println("Please enter your height: ");
    height = keyboard.nextDouble();

    if(height<=0)
    {
        System.out.println("That's an invalid height.");
        return;
    }

    System.out.println("Please enter your weight: ");
    weight = keyboard.nextDouble();

    if(weight<=0)
    {
        System.out.println("That's an invalid weight.");
        return;
    }

    bmi =  calculateBMI(height, weight);


    System.out.println("BMI = " + bmi);

    System.out.println(bmiDescription(bmi));

    keyboard.close();
}


static double calculateBMI (double height, double weight) {
    return weight * 703 / (height * height);
}


static String bmiDescription (double bmi) {
    if (bmi < 18.5) {
        return "You are underweight.";
    } else {
        if (bmi > 25) {
            return "You are overweight.";
        } else {
            return "You are optimal.";
        }
    }
}

}

4 个答案:

答案 0 :(得分:1)

您可以将格式化的io与printf一起使用,例如

double bmi = 23.053626543209877;
System.out.printf("BMI = %.2f%n", bmi);

输出(我相信你想要,甚至会进行四舍五入)

BMI = 23.05

答案 1 :(得分:0)

在处理数字时最好保持精确度,但在某些情况下,深度精度并不是真正的主要问题。如果要将特定的双精度数据类型变量设置为特定的小数精度,则可以将Double类型值传递给如下方法:

double bmi = round(23.053626543209877, 2);
System.out.println("BMI = " + bmi);

private static double round(double value, int precision) {
    int scale = (int) Math.pow(10, precision);
    return (double) Math.round(value * scale) / scale;
}

输出将是:

BMI = 23.05

正如方法名称所示,返回的结果也是四舍五入的。

答案 2 :(得分:0)

这是我使用的一种方便的方法:

public static double round (double value, int precision) {
    int scale = (int) Math.pow(10, precision);
    return (double) Math.round(value * scale) / scale;
}

只需传入您的值,然后传入精度(要显示的小数位数)。

例如:round(2.3891237, 2)将返回2.39

答案 3 :(得分:0)

在calculateBMI()中执行以下操作。

[1 1 1]

x 将是您计算的双倍值。