2016-05-28 12 views
0

私は小数点以下3桁まで四捨五入する必要があります。 Math.Roundを正確に実装する方法がわかりません。距離式で小数点以下3桁に丸めます

double distance= Math.Sqrt(deltax + deltay); 
Math.Round((decimal)distance, 3); 
Console.WriteLine("Distance :" + distance); 
+2

2行目の戻り値を無視しましたか? –

答えて

1

が(すでにUwe Keimによって注意)恐らくMath.roundの戻り値を使用し、小数キャストを削除します。これは私がこれまで持っているものです。

double distance = Math.Sqrt(10.438295 + 10.4384534295); 
Console.WriteLine("Distance :" + Math.Round(distance, 3)); 
3

は、出力文字列フォーマッタでラウンド、Math.Round()を使用して、それを丸めないでください:

double distance = Math.Sqrt(deltax + deltay); 
Console.WriteLine("Distance :{0:f3}", distance); 

あなたは出力をフォーマットするためMath.Round()を使用することはほとんどありません。

理由は、出力を小数点以下3桁にフォーマットする場合、表示するDPの数を示すために、通常、後ろにゼロを表示する必要があるからです。例えば

Console.WriteLine("{0:f3}", x); 

瞬時それは3に丸められたユーザに伝える0.100を表示する一方、その後

double rounded = Math.Round(x, 3); 
Console.WriteLine(rounded); 

は、0.1を表示する

double x = 0.1; 

を与えdps。

あなたは出力からゼロを末尾に削除したい場合、Math.Round()を使用することができますが、私は###文字列フォーマッタを使用したい:

​​

これは1として1.235として1.23451.0を出力に含まれます。

+0

または '$"距離:{距離:f3} "。 –

+1

@UweKeim確かに、私はVisual Studioの最新バージョンを使用する必要はありませんでした。 –

+1

'Math.Round'は数値を丸めますが、整数結果の場合は整数になります。 '{0:f3}'では、常に3小数点が表示されます。 (7対7.000) – Odrai

関連する問題