gpt4 book ai didi

kotlin - 以毫秒为单位计算年长否定答案

转载 作者:行者123 更新时间:2023-12-02 09:50:26 25 4
gpt4 key购买 nike

我正在尝试使用函数将 14 年转换为毫秒

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

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

最佳答案

如果您使用像 IntelliJ 这样的 IDE,它会提示您该问题:

enter image description here

由于类型不匹配,会溢出。 Kotlin 在类型方面非常严格,这有点类似于整数除法,除了乘法。

1000表示整数。它会将其自动装箱为 long,但您以 int 开头。相关,记住如何1 / 3 != 1f / 3f 。您所需要做的就是显式声明类型一次。你也可以为所有人做这件事,但我设法用一个人解决了这个问题。

因此,不要使用当前的乘法,而是使用 1000L * 60 * 60 * 24 * 365 * 14 。请注意添加的 L ,它将单一类型转换为 Long。否则它们默认为整数,这会导致溢出并转换为 Long。

<小时/>

如果您使用 IntelliJ 或 Android Studio,请尝试删除显式类型。如果您启用了这些标签(不完全确定它们叫什么,但这不是重点),您会看到它显示 Int ,不是Long :

enter image description here

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

关于kotlin - 以毫秒为单位计算年长否定答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53342432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com