2

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

4

5 回答 5

8

如果不想四舍五入,可以使用 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;
  }
}
于 2009-03-30T16:46:33.207 回答
5

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

有关示例,请参见Math.Round 的此特定重载

于 2009-03-30T16:41:46.417 回答
3

Math.Round 方法(十进制,Int32)

于 2009-03-30T16:38:52.037 回答
2

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

于 2009-03-30T16:39:00.337 回答
0

看看Math.Round

于 2009-03-30T16:39:22.957 回答