首页 > 解决方案 > 如何在 Python 中找到整数或浮点数的绝对值,而不使用库、除法、平方根、条件或内置函数

问题描述

我想知道是否可以在 Python 3 中做这样的事情。当然不允许使用 abs()。也不允许导入。

标签: python

解决方案


{1e999: x, -1e999: -x}[x*1e999]

我是认真的。这行得通。

1e999解释为浮点数,但它溢出了可用的精度,所以它是inf. 但无穷大可以是正的或负的。通过与无穷大相乘x,我们可以根据其符号将其强制转换为两个值之一,而无需使用条件运算符。然后我们可以x从查找表中选择或否定。

它等效于以下内容,但不需要导入:

from math import inf

{inf: x, -inf: -x}[x*inf]

推荐阅读