【问题标题】:How to round a decimal for output?如何舍入小数输出?
【发布时间】:2009-03-30 16:35:55
【问题描述】:

使用 C#,我想将小数格式化为仅显示两个小数位,然后我将取该小数并将其减去另一个小数。我希望能够做到这一点,而不必先将其转换为字符串进行格式化,然后再将其转换回小数。很抱歉,我忘记指定这一点,但我不想四舍五入,我只想去掉最后一个小数点。有没有办法做到这一点?

【问题讨论】:

    标签: c# decimal-point


    【解决方案1】:

    如果不想四舍五入,可以使用 Decimal.Truncate。不幸的是,它只能截断所有小数。要解决这个问题,您可以乘以 100,截断并除以 100,如下所示:

    decimal d = ...;
    d = Decimal.Truncate(d * 100) / 100;
    

    如果你做的次数足够多,你可以创建一个扩展方法

    public static class DecimalExtensions
    {
      public static decimal TruncateDecimal(this decimal @this, int places)
      {
        int multipler = (int)Math.Pow(10, places);
        return Decimal.Truncate(@this * multipler) / multipler;
      }
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用:Math.Round(number,2); 将数字四舍五入到小数点后两位。

      有关示例,请参阅 this specific overload of Math.Round

      【讨论】:

        【解决方案3】:
        【解决方案4】:

        你不想格式化它,但要舍入它。试试 Math.Round 函数。

        【讨论】:

          【解决方案5】:

          看看Math.Round

          【讨论】:

            猜你喜欢
            • 2014-01-05
            • 2014-02-28
            • 1970-01-01
            • 2021-03-31
            • 2012-04-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多