【问题标题】:Python Compiler - Using Decimal for Division of Zero?Python 编译器 - 使用十进制除零?
【发布时间】:2023-03-28 13:04:02
【问题描述】:

我目前正在创建一个编译器,并且还想实现除零。我注意到 python 中的十进制模块并认为它可能很有用。下面的代码显示了我想要了解的内容。无论如何要拆分表达式并检查负数和正数的除法 0 吗?提前致谢。

if input negative int/0 = -infin
if pos int/0 = infin
if 0/0 = null

等等。

【问题讨论】:

    标签: python decimal division


    【解决方案1】:

    python documentation 表示默认行为是引发异常。

    >>> import decimal
    >>> D = decimal.Decimal
    >>> a = D("12")
    >>> b = D("0")
    >>> a/b
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python3.4/decimal.py", line 1350, in __truediv__
        return context._raise_error(DivisionByZero, 'x / 0', sign)
      File "/usr/lib/python3.4/decimal.py", line 4050, in _raise_error
        raise error(explanation)
    decimal.DivisionByZero: x / 0
    >>> 
    

    而且,不要引发异常:

    如果此信号未被捕获,则返回 Infinity 或 -Infinity 符号由计算的输入决定。

    对于零除零,它没有数学定义,所以我不知道你可能想用它做什么。 Python 会返回另一个异常:

    >>> b/b
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python3.4/decimal.py", line 1349, in __truediv__
        return context._raise_error(DivisionUndefined, '0 / 0')
      File "/usr/lib/python3.4/decimal.py", line 4050, in _raise_error
        raise error(explanation)
    decimal.InvalidOperation: 0 / 0
    >>>
    

    如果信号未被捕获,则返回 NaN。 (知道操作是否是零除以零可能没有用)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2012-06-28
      • 2016-11-24
      • 2011-04-28
      • 2021-12-04
      相关资源
      最近更新 更多