1

Math.round メソッドに関して簡単な質問をしたかっただけです。2 つの int の double への除算を計算しようとしています。式は次のようになります: 199/39。これを行うと、答えとして 5.0 が返されます。答えは 5.1 で、小数がもう少しあるはずです。Math.round メソッドを使用して最も近い 10 分の 1 に丸めるように言われましたが、これを達成する方法がわかりません。その double 変数を int に変更して、int/int=int にする必要がありますか? Math.round が 5.1 を取得するためにどのように機能するかはわかりません。これは、小数点ではなく最も近い整数に丸められるだけであるためです。どんな助けでも素晴らしいでしょう。

PS これは宿題ですが、Math.round の使用方法に関するノート、スライド、または本に情報が見つからないという理由だけで質問します。

4

4 に答える 4

1

Math.round()結果の 10 進数値を取得する必要はありません。を で割ると、が得られintます。小数が必要な場合は、入力値の 1 つにキャストします。その後、結果として a が得られます。intintdoubledouble

(double) 199 / 39
199.0 / 39

// both return
5.102564102564102
于 2013-10-19T01:15:36.070 に答える
1

答えは 5.1 で、小数がもう少しあるはずです。

整数除算ではありません。5が正解です。

浮動小数点の答えが必要な場合は、少なくとも 1 つの浮動小数点オペランドを提供する必要があります199/39.0

System.printf()次に、またはを使用して、小数点以下の桁数を好きなだけ印刷するようにフォーマットできます。DecimalFormat.

浮動小数点値自体を小数点以下の桁数に丸めることはできません。これには小数点以下の桁数がなく、2 進数の桁数があるためです。

完全な議論、特に私の答えについては、この質問を参照してください。

于 2013-10-19T01:15:37.030 に答える
0

あなたの具体的な答え:

roundedNumber = (double)Math.round(unRoundedNumber * 10) / 10;

一般に、式は次のとおりです。

roundedNumber = 
(double)Math.round(unRoundedNumber * Math.pow(10, digitsToRoundTo)) 
/ Math.pow(10, digitsToRoundTo);
于 2013-10-19T01:13:33.700 に答える