代码之家  ›  专栏  ›  技术社区  ›  Burt

值对于小数来说太大或太小

  •  20
  • Burt  · 技术社区  · 15 年前

    我有以下代码:

    double shortfall = GetSomeNumber(); //3.3588548831176006E+29
    
    if (shortfall > 0)
    {
      returnValue = Convert.ToDecimal(shortfall);
    }
    

    这就产生了上述错误。

    有人能帮我吗?

    2 回复  |  直到 7 年前
        1
  •  26
  •   Jon Skeet    15 年前

    好吧,这很自然。

    decimal.MaxValue 电话:79228162514264337593543950335-您的电话号码大于此。

    虽然 decimal 精度比 double , 双重的 有更大的范围-它可以处理非常,非常大,非常,非常小的数字。

    现在,如果你能告诉我们你真正想做的是什么,我们可以帮助你找到解决办法…混合起来很少是个好主意 双重的 十进制的 老实说。

        2
  •  11
  •   Oded    15 年前

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

    Decimal 值可以介于正79228162514264337593543950335和负79228162514264337593543950335之间-请参见 MSDN .

    Double 可以处理更大的数字-负1.79769313486232E308到正1.79769313486232E308。这些不能全部转换成十进制。

    推荐文章