当前位置: 首页 > 知识库问答 >
问题:

函数int()向负无穷大(下限)或零舍入?

贾实
2023-03-14

我明白了为什么C中的-1/2计算为0,而Python中的-1?在Python中表示整数除法向无穷大舍入,即,floor应用于结果。

我原以为int(value)也会像floor那样,但实际上我得到了int(-1.5)=-1,这在我心目中应该是-2

所以问题是:为什么整数除法和函数int()之间的规则不一致?有什么合理的解释吗?

共有2个答案

司空通
2023-03-14

可能round()ndigits=0更接近您的期望。但是round()不返回整数,而是一个浮点:请参阅文档

陆雅志
2023-03-14

int()删除十进制分量;它不做任何舍入。从文件中:

如果x是浮点,则转换将向零截断。

要将float转换为int,这完全是逻辑行为。这不是分区、地板或其他。

//地板分割运算符,否则显然做地板,而不是截断。在Python 2中,对于两个整数操作数,/除法也是地板。又留档了:

结果是数学除法,并对结果应用“floor”函数

其中math.floor()记录为:

以浮点数形式返回x的底板,最大的整数值小于或等于x。

我在这里没有看到不一致之处;分割层,将浮点数截断为整数。

 类似资料:
  • 我知道Python会趋向于负无穷大,而C会截断,趋向于0。 到目前为止,我知道的是: 但是为什么Python选择向负无穷大进位呢?我没有找到任何资源来解释这一点,只是找到并听到人们含糊其辞地说:“出于数学原因”。 例如,在为什么-1/2在C中计算为0,但在Python中为-1?中: 抽象地处理这些事情的人倾向于认为朝着负无穷大的方向移动更有意义(这意味着它与数学中定义的模函数兼容,而不是%具有某种

  • 问题内容: 为什么下面的Java代码 打印’Infinity’且未定义。这在数学上不是错吗? 问题答案: 在数学中,有许多支持算术的不同结构。最突出的数字(例如自然数,整数和实数)不包括无穷大。在那些系统中,不支持除以零。 其他系统的确包含至少一个无穷大。参见,例如,真实的投影线。它确实允许被零除。 只有一种方法可以知道在特定系统中数学定义或未定义的内容-研究该系统。 类似地,操作是可交换的(a

  • 问题内容: 我们如何在代码中使用它们,什么会导致NaN(不是数字)? 问题答案: 如果您想了解有关Java中浮点数的更多信息,这可能是一个很好的参考。 正无穷大是一个正数,以至于无法正常表示。负无穷大是一个负数,以至于无法正常表示。NaN的意思是“不是数字”,它是由数学运算产生的,该数学运算不会产生数字,例如将0除以0。 在Java中,Double和Float类都具有代表三种情况的常量。它们是PO

  • 为什么Java中的以下代码 打印“无穷大”而不是未定义。这在数学上不是错的吗?

  • 问题 你想创建或测试正无穷、负无穷或NaN(非数字)的浮点数。 解决方案 Python并没有特殊的语法来表示这些特殊的浮点值,但是可以使用 float() 来创建它们。比如: >>> a = float('inf') >>> b = float('-inf') >>> c = float('nan') >>> a inf >>> b -inf >>> c nan >>> 为了测试这些值的存在,使用

  • 我有Eclipse for Java Developer 4.3和m2e、eclemma、infinitest。我的项目使用Eclipse m2e和junit 4.11。 我的目的是在每次infinitest重新运行受上次保存影响的测试时更新覆盖率信息。可能吗? 目前,我可以手动运行覆盖率测试并看到高亮显示的代码,但当我更改代码时,无限量启动,覆盖率高亮显示消失。