【问题标题】:Are there any programming languages in which int() rounds (rather than truncates)?有没有 int() 循环(而不是截断)的编程语言?
【发布时间】:2018-06-20 12:34:26
【问题描述】:

我最近参与了有关在计算机科学考试中使用伪代码的讨论。有一个使用整数除法的问题。我说 a DIV bINT(a / b) 是一样的,但是另一个贡献者说 INT() 的效果取决于语言的实现和它有时可能会四舍五入。

我的理解(以及 36 年的经验)是 int() 总是截断 - 即四舍五入。您是否知道设计上并非如此的任何编程语言,例如int(1.7) 会给出 2 吗?

【问题讨论】:

  • 由于您不能始终以二进制形式精确地表示十进制数,int() 可以有时在某些语言中进行四舍五入。例如在 Python 中,int(2.9999999999999999) 给你 3。但是int(2.999999999999999)(少一个 9)给你 2。
  • 谢谢 - 这是一个有趣的例子。我想我的意思是“设计”,而不是代表性的怪癖!
  • @Psytho:int 调用无关紧要:2.9999999999999999已经完全等于3.0,所以int 接收的参数正好是@ 987654328@ 和 int 返回完全相同的值。 Python 的 int(当前)从不从零舍入。

标签: casting integer rounding


【解决方案1】:

我不认为这个问题可以正式回答,原因很简单,在任何一天,开发人员都可能会推出一种 hipster很酷的新语言,int 会循环而不是截断。

话虽如此,在我曾经使用过甚至听说过的任何常见编程语言中,int 都会被截断。为了安全起见,在设计这样的问题时,您可以明确说明int 在其上下文中的含义。例如:

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

【讨论】:

  • 谢谢。你是对的 - 这是一个草率的问题,我现在稍微改写了一下!
猜你喜欢
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
  • 2018-07-05
  • 2018-01-11
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多