【发布时间】:2009-03-30 16:35:55
【问题描述】:
使用 C#,我想将小数格式化为仅显示两个小数位,然后我将取该小数并将其减去另一个小数。我希望能够做到这一点,而不必先将其转换为字符串进行格式化,然后再将其转换回小数。很抱歉,我忘记指定这一点,但我不想四舍五入,我只想去掉最后一个小数点。有没有办法做到这一点?
【问题讨论】:
标签: c# decimal-point
使用 C#,我想将小数格式化为仅显示两个小数位,然后我将取该小数并将其减去另一个小数。我希望能够做到这一点,而不必先将其转换为字符串进行格式化,然后再将其转换回小数。很抱歉,我忘记指定这一点,但我不想四舍五入,我只想去掉最后一个小数点。有没有办法做到这一点?
【问题讨论】:
标签: c# decimal-point
如果不想四舍五入,可以使用 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;
}
}
【讨论】:
您可以使用:Math.Round(number,2); 将数字四舍五入到小数点后两位。
有关示例,请参阅 this specific overload of Math.Round。
【讨论】:
你不想格式化它,但要舍入它。试试 Math.Round 函数。
【讨论】:
【讨论】: