Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 用毫秒长的否定答案计算年份_Kotlin - Fatal编程技术网

Kotlin 用毫秒长的否定答案计算年份

Kotlin 用毫秒长的否定答案计算年份,kotlin,Kotlin,我试着用函数转换14年的毫秒 fun getMinimumAgeInMillis(): Long { val long: Long = 1000 * 60 * 60 * 24 * 365 * 14 return (long) } 但是我得到的不是我的值而是负值——877631488。那么,问题出在哪里?我没有遇到长时间限制如果您使用IntelliJ之类的IDE,它会提示您这个问题: 它将溢出,因为类型不匹配。Kotlin对于类型是严格的,这有点

我试着用函数转换14年的毫秒

    fun getMinimumAgeInMillis(): Long {
        val long: Long = 1000 * 60 * 60 * 24 * 365 * 14
        return (long)
    }

但是我得到的不是我的值而是负值——877631488。那么,问题出在哪里?我没有遇到长时间限制

如果您使用IntelliJ之类的IDE,它会提示您这个问题:

它将溢出,因为类型不匹配。Kotlin对于类型是严格的,这有点类似于整数除法,除了乘法

1000
表示整数。它将自动装箱到很长的一段时间,但您从一个int开始。记住
1/3
!=<代码>1f/3f。只需显式声明一次类型。你也可以为所有人做这件事,但我设法用一件来修复它

因此,使用
1000L*60*60*24*365*14来代替当前的乘法运算。注意添加的
L
,它将单个类型转换为长类型。否则,它们默认为整数,这将导致溢出被转换为长字符串


如果使用IntelliJ或Android Studio,请尝试删除显式类型。如果您启用了这些标签(不完全确定它们的名称,但这不重要),您将看到它显示的是
Int
,而不是
Long

L
添加到其中一个,它将按预期更改为
Long
。请注意,
L
需要在乘法的早期添加。如果在i.e.14处添加它,它将在转换为整数之前溢出。再次以
1/3
为例,
1f/3f
是一种方法,但是
1/3f
1f/3
也是有效的。基本上,在“错误”操作发生之前,类型需要正确