在the official API doc上,它说:
以Int形式返回此数字的值,可能涉及舍入或截断。
我想要截断,但不确定。任何人都可以解释may involve rounding or truncation
的确切含义吗?
p.s。:在我的单元测试中,(1.7).toInt()
为1,可能涉及截断。
答案 0 :(得分:12)
Double.toInt()
的KDoc只是继承自Number.toInt()
,为此,具体含义是,它在具体的Number
实现中定义如何转换为{{1} }}
在Kotlin中,Int
操作遵循IEEE 754标准,Double
转换的语义与casting double
to int
in Java的语义相同,即正常数字向零舍入,删掉小数部分:
Double.toInt()
答案 1 :(得分:0)
首先,这篇文档来自Java的文档is straight up copied。
据我所知,它只截断小数点,例如3.14
将成为3
,12.345
将成为12
,9.999
将成为9
。
阅读this回答及其下的评论表明没有实际的舍入。 "舍入"实际上是截断。舍入与Math.floor
不同,而不是舍入为Integer.MIN_VALUE
,而是舍入为0
。
答案 2 :(得分:0)
使用函数to.Int()
,并将值发送给标记为Int
的新变量:
val x: Int = variable_name.toInt()
答案 3 :(得分:-1)
在kotlin中使用此roundToInt()
import kotlin.math.roundToInt
fun main() {
var r = 3.1416
var c:Int = r.roundToInt()
println(c)
}