在Kotlin的Double.toInt()中使用哪种方法舍入或截断?

在官方的API文档上 ,它说:

以Int形式返回此数字的值,可能涉及四舍五入或截断。

我想截断,但不知道。 任何人都可以解释may involve rounding or truncation的确切含义吗?

ps:在我的单元测试中, (1.7).toInt()是1, 可能涉及截断。

Double.toInt()的KDoc是从Number.toInt()继承而来的,具体的含义是,在具体的Number实现中如何将其转换为Int

在Kotlin中, Double操作符合IEEE 754标准, Double.toInt()转换的语义与在Double.toInt()转换为int的语义相同,也就是说,正常数字向零舍入,丢弃小数部分:

 println(1.1.toInt()) // 1 println(1.7.toInt()) // 1 println(-2.3.toInt()) // -2 println(-2.9.toInt()) // -2 

首先,这个文档是从Java的文档中直接复制的。

据我所知只能截断小数点,例如3.14会变成12.345会变成12.345变成9

读这个答案和它下面的意见表明,没有实际的四舍五入。 “舍入”实际上是截断的。 舍入与Math.floor不同,舍入为Integer.MIN_VALUE ,舍入为0