如何限制十进制数?

时间:2010-07-09 12:20:53

标签: c# .net floating-point rounding

  

可能重复:
  How to format a decimal

如何限制我的十进制数,以便我在点之后只获得3位数?

e.g  2.774

6 个答案:

答案 0 :(得分:43)

Math.Round Method (Decimal, Int32)

示例:

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

答案 1 :(得分:11)

我假设你的意思是将其格式化为输出:

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

答案 2 :(得分:2)

要使Decimal返回使用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"

答案 3 :(得分:1)

使用Math.Round将其四舍五入到 3 小数位。

答案 4 :(得分:1)

限制浮点数的精度是一个SQL概念。 csharp中的十进制仅表示它将记住分配的精度。在分配之前,您可以舍入到小数点后三位。 IE,Math.Round()

答案 5 :(得分:0)

我的部分答案是答案,另一部分只是一个有趣的观点:

我经常希望将变量视为prop/field。所以创建一个extension method来解决我的问题:

Tensao只是一个与价值相关的枚举。

    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);
        }
    }