对于十进制,值太大或太小

时间:2010-08-05 10:22:57

标签: c# .net

我有以下代码:

double shortfall = GetSomeNumber(); //3.3588548831176006E+29

if (shortfall > 0)
{
  returnValue = Convert.ToDecimal(shortfall);
}

这会产生上述错误。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:26)

嗯,这是相当不言自明的。

decimal.MaxValue是79,228,162,514,264,337,593,543,950,335 - 您的电话号码大于此数。

虽然decimal的精确度高于double,但double的范围更大 - 它可以处理非常非常大的非常非常小的数字。

现在,如果你可以告诉我们你真正想要做什么,我们可以尝试帮助找到解决方案......将doubledecimal混合起来很少是个好主意。说实话。

答案 1 :(得分:11)

这意味着返回的值不能转换为十进制,因为它太大了。

Decimal值可以介于正数79,228,162,514,264,337,593,543,950,335之间,为负数79,228,162,514,264,337,593,543,950,335 - 见MSDN

Double可以处理更大的数字 - 负数1.79769313486232e308至正数1.79769313486232e308。这些都不会全部转换为十进制。