有小数,如果存在则要将其舍入到2位小数
你尝试过使用 value = Decimal.Round(value, 2)
吗?
例如:
using System;
class Test
{
static void Main()
{
decimal d = 1234.5678m;
Console.WriteLine("Before: {0}", d); // Prints 1234.5678
d = decimal.Round(d, 2);
Console.WriteLine("After: {0}", d); // Prints 1234.57
}
}
请注意,这是四舍五入而不是简单地删除(因此在这里它是向上舍入)......您需要什么? Decimal
结构可能支持您需要做的任何操作。请查阅 MSDN 获取更多选项。decimal.Truncate(myDecimal * 100) / 100
这会截断第一个小数点后面的所有内容。有关四舍五入,请参阅Jon的答案。
如果只是用于显示目的,您可以使用:
Console.Out.WriteLine("Number is: {0:F2}", myDecimalNumber);
这应该可以运行(编辑:已修复以去除四舍五入):
((Int32)(value * Math.Pow(10, decimalPlaces))) / (Math.Pow(10D, decimalPlaces));
^
表示异或。另外,如果有人使用decimal
,很可能这是一个有意的选择,他们可能不希望使用其他类型(即使是你的示例在任何情况下也是错误的)。 - Joey