Java Rounding Up

时间:2010-09-14 02:25:47

标签: java rounding

如何将numberGrade的值设置为如此,如果它是89.5则变为90. numberGrade被视为double,但使其成为int不会向上或向下舍入。

public class GradeReporter
{
    // The limit is the inclusive lower limit for each letter
    // grade -- this means that 89.5 is an 'A' not a 'B'
    public static final double A_LIMIT = 90;
    public static final double B_LIMIT = 80;
    public static final double C_LIMIT = 70;
    public static final double D_LIMIT = 60;
    public static final double F_LIMIT = 60;

    /** Converts a numeric grade into a letter grade. Grades should be rounded to 
     *  nearest whole number
     *
     * @param a numeric grade in the range of 0 to 100
     * @returns a letter grade based on the numeric grade, possible grades are A, B, C, D and F.
     */
    public char letterGrade(double numberGrade)
    {
        int grade = int(numberGrade);
        if (grade >= A_LIMIT)
            letterGrade = 'A';
        else if (grade >= B_LIMIT)
            letterGrade = 'B';
        else if (grade >= C_LIMIT)
            letterGrade = 'C';
        else if (grade >= D_LIMIT)
            letterGrade = 'D';
        else if (grade < F_LIMIT)//4
            letterGrade = 'F';
        return letterGrade;
    }

3 个答案:

答案 0 :(得分:18)

要围绕向上,您可以使用Math.ceil(numberGrade)。要舍入到最接近的整数,请使用Math.round(numberGrade)

请参阅:the Math class

答案 1 :(得分:2)

你可以使用:

    int intGrade = (int)(doubleGrade + 0.5);

或者

    long longGrade = Math.round(doubleGrade);
    int  intGrade  = (int)longGrade;

答案 2 :(得分:0)

您是说要将所有小数部分四舍五入 - 89.2轮到90?如果是这种情况,请使用Math.ceil(double val)。

如果您想要舍入到最接近的数字(89.2轮到89,99.6轮到90),您想要java.lang.StrictMath.round(float val)