Math.round()无法正常工作

时间:2012-10-02 20:12:26

标签: java android rounding rounding-error

这是我的计划。非常简单地说,它应该将输入的数字舍入到给定的小数位数。即4.245舍入到2位小数将给出4.25。但是,我总是只将它四舍五入为整数...为什么?让我感到困惑的是,我在android中使用相同的代码并且它完美无缺地运行

import java.util.Scanner;


public class Rounder {

public static void main(String[] args) {
    double input1, roundednumber;
    int input2;
    Scanner keyboard = new Scanner(System.in);
    System.out.println("number to round ");
    input1 = keyboard.nextDouble();
    System.out.println("decimals");
    input2 = keyboard.nextInt();

    roundednumber = rounder(input1, input2);
    System.out.println(roundednumber);
}


public static double rounder(double number, int decimals){
    int multiplier = (int) Math.pow(10, decimals);
    double roundednumber;
    roundednumber = Math.round(number*multiplier)/multiplier;
    return roundednumber;       
}
}

这是我的android类的片段

double result1 = fv1/(Math.pow(1+(r1/n1),n1*t1));
result1 = (double) (Math.round(result1 * 100)) / 100;

3 个答案:

答案 0 :(得分:7)

除以整数会产生一个整数,因此您可以使用:

Math.round(number * multiplier) / (double)multiplier;

答案 1 :(得分:0)

roundednumber = Math.round(number*multiplier)/((double)(multiplier));

答案 2 :(得分:0)

那是因为Math.round()返回一个int,你用int除。从而产生了int。