2011-04-05 34 views

回答

2

铸造objectdouble将试图拆箱的对象为double,但装箱对象是decimal。您需要先将其拆箱,然后将其转换为双精度。然后执行舍入:

Math.Round((double)(decimal)value, 2);

0

作为替代约翰的回答,如果你想使用其他号码类型不仅仅是小数,您可以使用此代码;

private double RoundOff(object value) 
    { 
     return Math.Round(Convert.ToDouble(value), 2); 
    } 
2

其他答案在获取将会运行的东西方面是正确的 - 但我不会推荐使用它们。

您应该差不多从不转换为decimaldouble。如果你想使用小数,你应该使用Math.Round(decimal)。不要将小数转换成双倍和四舍五入 - 有可能会出现令人讨厌的情况,即丢失信息。

选择正确的代表并坚持下去。哦,并重新设计RoundOff不是object。通过一切手段有一个过载double和一个decimal,但给他们适当的参数类型。