私は小数点以下3桁まで四捨五入する必要があります。 Math.Roundを正確に実装する方法がわかりません。距離式で小数点以下3桁に丸めます
double distance= Math.Sqrt(deltax + deltay);
Math.Round((decimal)distance, 3);
Console.WriteLine("Distance :" + distance);
私は小数点以下3桁まで四捨五入する必要があります。 Math.Roundを正確に実装する方法がわかりません。距離式で小数点以下3桁に丸めます
double distance= Math.Sqrt(deltax + deltay);
Math.Round((decimal)distance, 3);
Console.WriteLine("Distance :" + distance);
が(すでにUwe Keimによって注意)恐らくMath.roundの戻り値を使用し、小数キャストを削除します。これは私がこれまで持っているものです。
double distance = Math.Sqrt(10.438295 + 10.4384534295);
Console.WriteLine("Distance :" + Math.Round(distance, 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.2345
と1.0
を出力に含まれます。
または '$"距離:{距離:f3} "。 –
@UweKeim確かに、私はVisual Studioの最新バージョンを使用する必要はありませんでした。 –
'Math.Round'は数値を丸めますが、整数結果の場合は整数になります。 '{0:f3}'では、常に3小数点が表示されます。 (7対7.000) – Odrai
2行目の戻り値を無視しましたか? –