有哪些编程语言中的int()函数是四舍五入而不是截断?

4
最近我参与了一场关于计算机科学考试中伪代码使用的讨论。其中有一个问题使用了整数除法。我说 a DIV bINT(a / b) 是相同的,但另一个贡献者说 INT() 的效果取决于语言实现,有时可能会向上舍入。
我的理解(和36年的经验)是 int() 总是截断 - 即向下舍入。你是否知道有哪些编程语言在设计上不是这种情况,例如 int(1.7) 是否会得到 2?

1
由于在二进制形式下无法精确表示十进制数,因此在某些语言中,int()有时会四舍五入。例如,在Python中,int(2.9999999999999999)将得到3。然而,int(2.999999999999999)(少一个9)将得到2。 - Psytho
1
谢谢 - 这是一个有趣的例子。我想我所说的是“设计上”,而不是代表性的怪癖! - JaquesJaquesLiverot
3
那里的int调用是无关紧要的:2.9999999999999999已经完全等于3.0,所以int收到的参数就是3.0,并且int返回完全相同的值。Python的int(目前)从不远离零四舍五入。 - Mark Dickinson
1个回答

0

我认为这个问题无法得到正式的答案,因为任何一天开发人员都可能推出一个时髦很酷的新语言,其中int会舍去而不是四舍五入。

话虽如此,在我所使用或听说过的任何通用编程语言中,int都会将数字向下取整。为了保险起见,在设计这样的问题时,您可以明确说明int在其上下文中的含义。例如:

int(x)表示将x截断为最接近但不大于x的整数值。例如:int(1.7)将返回1


谢谢。你说得对,这是一个不太严谨的问题,我现在稍微改了一下措辞! - JaquesJaquesLiverot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接