只是一个我对此感到困惑的问题
所以我正在弄乱float('inf')
,并想知道它的用途。
另外我注意到,如果我添加-inf + inf
,我会nan
与零相同。
我对这两个值的用途感到困惑。
同样当我nan - inf
我没有得到-inf
我得到nan
我确信这一切都很简单,但我偶然发现它们并且不知道他们做了什么
答案 0 :(得分:43)
inf
是无穷大 - 一个大于任何其他值的值。因此,-inf
小于任何其他值。
nan
代表Not A Number,这不等于0
。
虽然正负无穷大可以说对0
是对称的,但对于任何值n
都可以这样说,这意味着添加两者的结果会产生nan
。这个想法在this math.se question中进行了讨论。
因为nan
(字面上)不是数字,所以你不能用它算术,所以第二次操作的结果也不是数字(nan
)
答案 1 :(得分:3)
Inf
是无穷大,它是“比所有其他数字更大”的数字。尝试从中减去任何你想要的东西,它不会变小。所有数字均为< Inf
。 -Inf
类似,但比所有内容都要小。
NaN
表示非数字。如果你尝试进行一些没有意义的计算,你会得到NaN
。 Inf - Inf
就是这样一个计算。通常NaN
用于表示缺少某些数据。
答案 2 :(得分:2)
nan
表示“非数字”,如果您执行的计算结果不能表示为数字,则会获得浮点值。您使用NaN
执行的任何计算也会产生NaN
。
inf
表示无限。
例如:
>>> 2*float("inf")
inf
>>> -2*float("inf")
-inf
>>> float("inf")-float("inf")
nan
答案 3 :(得分:2)
你说:
当我做
nan - inf
时我得不到-inf
我得nan
这是因为包含NaN
作为操作数的任何操作都将返回NaN
。
与NaN
进行比较会返回无序结果。
>>> float('Inf') == float('Inf')
True
>>> float('NaN') == float('NaN')
False
答案 4 :(得分:0)
我使用inf / -inf作为初始值来查找测量的最小/最大值。假设您使用传感器测量温度,并且想要跟踪最低/最高温度。传感器可能提供了有效的温度,或者可能已损坏。伪代码:
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="left" style="-moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; border-collapse: collapse; color: #4e5054; font-family: 'Verdana', 'Arial', 'Helvetica', sans-serif; font-size: 12px; font-smoothing: antialiased; font-weight: normal; line-height: 18px; margin: 0; padding: 0; vertical-align: top; padding-bottom:0;"><!-- stat -->
<table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#e5e5e5">
<tr>
<td align="center" style="padding-top:20px; padding-bottom:20px;"><table width="100%" border="0" cellspacing="0" cellpadding="0" style="display:block; max-width:600px;" class="wrapto680px">
<tr>
<td width="100%" valign="top" align="center" style="text-align:center; font-size:0px;"><!--[if (gte mso 9)|(IE)]><table width="600" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top" width="600"><![endif]-->
<div style="display:inline-block;" class="ecxmarginhack">
<table width="600" border="0" cellspacing="0" cellpadding="0" align="left">
<tr>
<td width="100%" valign="top"><table width="150" border="0" cellspacing="0" cellpadding="0" align="left" style="border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;">
<tr>
<td style="font-size:0px;"><img style="display:block;" border="0" src="http://www.stevensegallery.com/200/200" width="150" height="150" alt=""/></td>
</tr>
</table>
<table width="150" border="0" cellspacing="0" cellpadding="0" align="left" style="border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;">
<tr>
<td style="font-size:0px;"><img style="display:block;" border="0" src="http://www.stevensegallery.com/200/200" width="150" height="150" alt=""/></td>
</tr>
</table>
<table width="150" border="0" cellspacing="0" cellpadding="0" align="left" style="border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;">
<tr>
<td style="font-size:0px;"><img style="display:block;" border="0" src="http://www.stevensegallery.com/200/200" width="150" height="150" alt=""/></td>
</tr>
</table>
<table width="150" border="0" cellspacing="0" cellpadding="0" align="left" style="border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;">
<tr>
<td style="font-size:0px;"><img style="display:block;" border="0" src="http://www.stevensegallery.com/200/200" width="150" height="150" alt=""/></td>
</tr>
</table></td>
</tr>
</table>
</div>
<!--[if (gte mso 9)|(IE)]></td></tr></table><![endif]--></td>
</tr>
</table>
<!-- end 4 col --></td>
</tr>
</table>
<!-- End --></td>
</tr>
</tbody>
</table>
以上代码之所以有效,是因为inf / -inf / nan对最小/最大运算有效,因此无需处理异常。