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

时间:2017-08-23 02:04:36

标签: type-conversion kotlin

the official API doc上,它说:

  

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

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

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

4 个答案:

答案 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将成为312.345将成为129.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)
}