我有一个函数作为下错误:指定的转换是无效的,而转换小数翻番
private double RoundOff(object value)
{
return Math.Round((double)value, 2);
}
而且我调用它作为下
decimal dec = 32.464762931906M;
var res = RoundOff(dec);
我gettingthe以下错误
指定的演员表无效
什么是错误?
感谢
我有一个函数作为下错误:指定的转换是无效的,而转换小数翻番
private double RoundOff(object value)
{
return Math.Round((double)value, 2);
}
而且我调用它作为下
decimal dec = 32.464762931906M;
var res = RoundOff(dec);
我gettingthe以下错误
指定的演员表无效
什么是错误?
感谢
铸造object
到double
将试图拆箱的对象为double,但装箱对象是decimal
。您需要先将其拆箱,然后将其转换为双精度。然后执行舍入:
Math.Round((double)(decimal)value, 2);
作为替代约翰的回答,如果你想使用其他号码类型不仅仅是小数,您可以使用此代码;
private double RoundOff(object value)
{
return Math.Round(Convert.ToDouble(value), 2);
}
其他答案在获取将会运行的东西方面是正确的 - 但我不会推荐使用它们。
您应该差不多从不转换为decimal
和double
。如果你想使用小数,你应该使用Math.Round(decimal)
。不要将小数转换成双倍和四舍五入 - 有可能会出现令人讨厌的情况,即丢失信息。
选择正确的代表并坚持下去。哦,并重新设计RoundOff
到不是以object
。通过一切手段有一个过载double
和一个decimal
,但给他们适当的参数类型。