Javaで数字を丸める

私は特定の小数点以下の桁数を丸める方法を知りません 私はどこにでもあらゆるものを試してみました

currently I have my program to round up to a whole number with double rACT = Math.ceil(ACT); double rSAT = Math.ceil(SAT); double rGPA = Math.ceil(GPA);

しかし、小数点以下2桁まで切り上げる必要があります

FYI - 私は高校生です。私は本当に複雑な何かを必要としません。 これを行うには私は私の方法が15未満である必要があります私は任意の行を無駄にすることができます

2
追加された 著者 Vishal,
丸め/切り捨て規則が適用された数を(N桁に)丸め、文字列表現を得ることには違いがあります...
追加された 著者 user166390,

4 答え

おそらくもっと簡単な方法がありますが、明白です:

double rSAT = Math.ceil(SAT * 100)/100;

これは、2.123のような数値を212.3に変換し、213に丸めた後、2.13に戻します。

9
追加された
@izuriel - 質問はの丸め数を指定します(また、 Math.ceil も使用します)。私の説明は固定されていますが、212.3から213に丸められています。
追加された 著者 Brendan Long,
実際には、 Math.ceil()を呼び出すと、 212.3 213 に丸められます。数学では、天井関数は整数より大きな任意の数を次の利用可能な整数に丸めるので、 212.0003 でも 213 に丸められます。標準の丸め関数を実行する Math.round()を使用できます。これは Math.floor(decimal + 0.5)と同等です。
追加された 著者 Brandon Buck,
私は、数字を丸める方法を尋ねていて、彼が思いついた解決策を与えていたということでした。どちらの方法でも、 212.3 Math.ceil()を呼び出すと、間違った 212 そのエラーを通知するコメント。
追加された 著者 Brandon Buck,

通常、丸めは数値をレンダリングする時点(文字列など)で行うのが最適です。そうすれば、数値は最高の精度で保存/渡すことができ、情報はユーザーに表示するときにのみ切り捨てられます。

このコードは、小数点以下2桁に丸めて、天井を使用します。

double unrounded = 3.21235;
NumberFormat fmt = NumberFormat.getNumberInstance();
fmt.setMaximumFractionDigits(2);
fmt.setRoundingMode(RoundingMode.CEILING);

String value = fmt.format(unrounded);
System.out.println(value);
2
追加された

The question has been asked before, check out How to round a number to n decimal places in Java

私の意見では、最も簡単な解決策は、これはクリスです。

double myNum = .912385;
int precision = 10000; //keep 4 digits
myNum= Math.floor(myNum * precision +.5)/precision;
0
追加された
なぜ Math.ceil(x)ではなく Math.floor(x + 0.5)ですか?
追加された 著者 Brendan Long,
それのために設計された関数( Math.ceil )を使ってちょうど切り上げることもできます。
追加された 著者 Brendan Long,
例えば、数が1.4 - > 1.4 + 0.5 = 1.9の場合、数が1.6 - > 1.6 + 0.5 = 2.1(2.1)= 2の場合、floor(1.9)= 1となるので0.5を加算する。
追加された 著者 Zohaib,

あなたが数字の文字列表現を探しているなら、あなたは以下のようにすることができます:

DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(12.912385));
0
追加された