【问题标题】:.NET: Decimal to rounded string.NET:小数到四舍五入的字符串
【发布时间】:2010-01-26 18:39:27
【问题描述】:

如果我有一个decimal,我如何获得它的带有两位小数的字符串版本?这不起作用:

Math.Round(myDecimal, 2).ToString("{0.00}");

【问题讨论】:

    标签: c# .net math rounding


    【解决方案1】:

    不要使用大括号,它们用于使用string.Format 将格式化值嵌入到更长的字符串中。使用这个:

    myDecimal.ToString("0.00");
    

    【讨论】:

    • 请注意,格式字符串"{0.00}" 也不适用于string.Format;你必须在那里使用"{0:0.00}"
    【解决方案2】:

    也许我错了,但我试过 myDecimal.ToString(); 并且成功了。

    【讨论】:

    • +1 :与floatdouble 不同,decimal 数据类型将保留精度的位数,因此Math.Round(myDecimal, 2).ToString(); 应该可以正常工作。不需要格式字符串。
    【解决方案3】:

    假设myDecimalSystem.Decimal,那么Math.Round(myDecimal, 2).ToString(); 将根据需要显示两位小数的精度,不带任何格式字符串(除非您的数字的绝对值大于 10^27-1 )。这是因为decimal 数据类型保留了数字的完整精度。也就是说1m1.0m1.00m的存储方式都不同,显示也会不同。

    请注意,floatdouble 并非如此。 1f1.0f1.00f 的存储和显示方式相同,1d1.0d1.00d 也是如此。

    由于必须在运行时解析格式字符串,因此在大多数情况下,我可能会在这样的代码中省略它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      • 2020-07-18
      相关资源
      最近更新 更多