2

これが私のプログラムです。簡単に言えば、入力された数値を指定された小数点以下の桁数に四捨五入することになっています。つまり、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;
4

3 に答える 3

7

整数で割ると整数が生成されるため、次を使用できます。

Math.round(number * multiplier) / (double)multiplier;
于 2012-10-02T20:16:39.547 に答える
0

これは、Math.round()がintを返し、intで除算しているためです。したがって、intになります。

于 2012-10-02T20:17:08.697 に答える
0

試す

roundednumber = Math.round(number*multiplier)/((double)(multiplier));
于 2012-10-02T20:15:23.607 に答える