web-dev-qa-db-ja.com

10進数を制限する方法は?

可能性のある複製:
小数点をフォーマットする方法

小数点以下3桁しか得られないように、10進数を制限するにはどうすればよいですか?

e.g  2.774
18
aharon

Math.Roundメソッド(Decimal、Int32)

例:

Math.Round(3.44, 1); //Returns 3.4.
44
Pranay Rana

私はあなたが本当にそれを出力用にフォーマットすることを意味していると思います:

Console.WriteLine("{0:0.###}", value);
11

小数点を戻すには、小数点の数を指定する2番目のパラメーターを指定して_Math.Round_を使用します。

_decimal d = 54.9700M;    
decimal f = (Math.Round(d, 2)); // 54.97
_

数値の文字列表現を取得するには、.ToString()を使用して小数点をN3として指定します。 3は小数点です。

_decimal d = 54.9700M;    
string s = number.ToString("N3"); // "54.97"
_
2
heads5150

使用する Math.Round 小数点以下に丸めます。

1
Donnie

浮動小数点数の精度を制限することはSQLの概念です。 csharpの10進数は、割り当てられた精度を記憶することのみを意味します。割り当てる前に、小数点以下3桁に丸めることができます。 IE、Math.Round()

1
Tim Coker

私の答えの一部は応答ですが、別の部分は単なる興味深い点です:

変数をprop/fieldとして見たいことがよくあります。したがって、extension methodを作成して問題を解決します。

Tensaoは、関連する値を持つ単なるEnumです。

    public static class TensaoExtensions {
        public static double TensaoNominal(this Tensao tensao) {
            return Math.Round((double.Parse(EnumMapper.Convert(typeof(Tensao),
                           tensao.ToString()))) * 1000 / Math.Sqrt(3), 3);
        }
    } 
0
Custodio