Python 如何获取小数点的值。不精确异常?
在模块文档中,我阅读了: 类小数。不精确 表示发生舍入,结果不准确。[……]四舍五入 返回结果。[……] 如何得到四舍五入的结果?下面是一个例子:Python 如何获取小数点的值。不精确异常?,python,exception,decimal,Python,Exception,Decimal,在模块文档中,我阅读了: 类小数。不精确 表示发生舍入,结果不准确。[……]四舍五入 返回结果。[……] 如何得到四舍五入的结果?下面是一个例子: >>> from decimal import Decimal, Context, Inexact >>> (Decimal("1.23")/2).quantize(Decimal("0.1"), context=Context(traps=[Inexact])) Traceback (most recent ca
>>> from decimal import Decimal, Context, Inexact
>>> (Decimal("1.23")/2).quantize(Decimal("0.1"), context=Context(traps=[Inexact]))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/decimal.py", line 2590, in quantize
context._raise_error(Inexact)
File "/usr/lib/python3.4/decimal.py", line 4043, in _raise_error
raise error(explanation)
decimal.Inexact: None
>>从十进制输入十进制、上下文、不精确
>>>(十进制(“1.23”)/2)。量化(十进制(“0.1”),上下文=上下文(陷阱=[不精确])
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python3.4/decimal.py”,第2590行,量化
上下文。\u引发\u错误(不精确)
文件“/usr/lib/python3.4/decimal.py”,第4043行,出现错误
提出错误(解释)
十进制。不精确:无
您误解了文档;该操作仅在您不陷阱时返回舍入结果,而在上下文上设置不精确
标志
但是,当您捕获异常时,会引发异常,并且不会返回取整结果
从:
上下文还具有用于监视计算过程中遇到的异常情况的信号标志。在显式清除之前,这些标志将保持设置状态,因此最好使用clear\u flags()
方法在每组受监控的计算之前清除这些标志
>从十进制导入本地上下文
>>>使用localcontext()作为ctx:
... (十进制(“1.23”)/2)。量化(十进制(“0.1”))
... 打印(ctx.flags)
...
十进制('0.6')
{: 0, : 0, : 0, : 1, : 1, : 0, : 0, : 0}
这里设置了decimal.increact
和decimal.Rounded
标志,告诉您decimal('0.6')
返回值不精确
仅当特定信号应为错误时才使用补漏白;e、 当四舍五入对你的申请是个问题时
>>> from decimal import localcontext
>>> with localcontext() as ctx:
... (Decimal("1.23")/2).quantize(Decimal("0.1"))
... print(ctx.flags)
...
Decimal('0.6')
{<class 'decimal.Subnormal'>: 0, <class 'decimal.Underflow'>: 0, <class 'decimal.DivisionByZero'>: 0, <class 'decimal.Inexact'>: 1, <class 'decimal.Rounded'>: 1, <class 'decimal.InvalidOperation'>: 0, <class 'decimal.Overflow'>: 0, <class 'decimal.Clamped'>: 0}