web-dev-qa-db-ja.com

C#-Math.Round

C#で最も近い10分の1の位置に丸める方法を理解しようとしています。たとえば、double型の値があります。このdoubleは現在10.75に設定されています。ただし、10分の1の位置を超えてすべてを丸めてから切り捨てる必要があります。この場合、私は10.8の値を求めています。 C#で10分の1の位置に丸めるにはどうすればよいですか?

ありがとうございました!

16
Villager
Math.Round(yourNumber, 1)

2番目のパラメーターは、四捨五入する小数点以下の桁数です。あなたの場合、最終結果として小数点以下1桁が必要です。

33
Roatin Marth

decimalsパラメータを取る Math.Round のオーバーロードを使用する必要があります。

Math.Round(10.75, 1) // returns 10.8

比較のために:

Math.Round(10.75)    // returns 11
Math.Round(10.75, 0) // returns 11
Math.Round(10.75, 2) // returns 10.75
13
Noldorin

タイトルにMath.Round()を使用したので、基本的なMath.Round(10.75,1)アプローチをすでに試したと仮定しますが、予期しないものが返されます。そのことを念頭に置いて、関数のさまざまなオーバーロードのいくつか、特にMidPointRounding列挙型を受け入れるものを検討することをお勧めします。

http://msdn.Microsoft.com/en-us/library/f5898377.aspx

8
Joel Coehoorn

本当に丸める必要がありますか、それとも印刷用にフォーマットするだけで、変数自体がその精度を保持できるようにすることができますか?何かのようなもの:

decimal value = 10.75;
value.ToString ("#.#");
4
Bill the Lizard

最初の小数以降のすべてを「カット」したいだけの場合、これは機能するはずです。

   return Math.Round(value * 10)/10
2
Toto