我正在尝试用millis转换14年,使用函数
fun getMinimumAgeInMillis(): Long {
val long: Long = 1000 * 60 * 60 * 24 * 365 * 14
return (long)
}
Run Code Online (Sandbox Code Playgroud)
但不是我的价值,我得到负值-877631488.那么,哪里有问题呢?我没有遇到长期限制
如果你使用像IntelliJ这样的IDE,它会暗示你遇到这个问题:
它会溢出,因为类型不匹配.Kotlin在类型方面是严格的,除了乘法之外,这有点类似于整数除法.
1000
意味着整数.它将自动停止运行很长时间,但你从一个int开始.相关,请记住1 / 3
!= 1f / 3f
.您需要做的就是明确声明类型一次.你也可以为所有人做这件事,但我设法用一个修复它.
因此,请使用,而不是当前的乘法1000L * 60 * 60 * 24 * 365 * 14
.注意添加的L
,它将单个类型转换为Long.否则它们默认为整数,这会导致溢出转换为Long.
如果您使用IntelliJ或Android Studio,请尝试删除显式类型.如果您启用了这些标签(不完全确定它们被称为什么,但这不是重点),您会看到它显示Int
,而不是Long
:
添加L
到其中一个,它会Long
按预期更改.请注意,L
需要在乘法的早期添加.如果你在ie 14处添加它,它会在转换为整数之前溢出.以1 / 3
作为再一个例子,1f / 3f
是一个办法,但1 / 3f
和1f / 3
同样有效.基本上,在"错误"操作发生之前,类型需要是正确的.
归档时间: |
|
查看次数: |
58 次 |
最近记录: |