Python decimal.InvalidOperation错误

Mat*_*teo 8 python math python-3.x

运行这样的东西时,我总是遇到这个错误:

from decimal import *
getcontext().prec =30

b=("2/3")

Decimal(b)
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback (most recent call last):
  File "Test.py", line 6, in <module>
    Decimal(b)
decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>]
Run Code Online (Sandbox Code Playgroud)

另外,为什么我从控制台得到这个结果?

>>> Decimal(2/3)
Decimal('0.66666666666666662965923251249478198587894439697265625')
Run Code Online (Sandbox Code Playgroud)

谢谢

Kev*_*vin 13

Decimal的初始值设定项不能接受带斜杠的字符串.非正式地,字符串必须看起来像一个数字.此表显示字符串参数的正确格式.如果你想计算2/3,那么

>>> Decimal(2)/Decimal(3)
Decimal('0.6666666666666666666666666667')
Run Code Online (Sandbox Code Playgroud)

Decimal(2/3)给出Decimal('0.66666666666666662965923251249478198587894439697265625')因为2/3计算浮点数,并且浮点数具有固有的有限精度.这是计算机2/3使用浮点数表示的最接近的值.

  • 其他算术符号也是如此! (2认同)