gpt4 book ai didi

kotlin - 为什么更高范围的产品对 kotlin 的回答结果为 0?

转载 作者:行者123 更新时间:2023-12-01 11:16:59 25 4
gpt4 key购买 nike

为什么 (1..100) 减少产品工作?

>>> (1..100).toList().reduce { acc, i -> acc * i }
0
>>> (1..10).toList().reduce { acc, i -> acc * i }
3628800

谢谢

最佳答案

基本上值溢出了。当您也使用 longs 时,这一点非常清楚:

fun main(args: Array<String>) {
println("Max int: " + Int.MAX_VALUE)
println("1..12 int: " + (1..12).toList().reduce { acc, i -> acc * i })
println("1..12 long: " + (1L..12L).toList().reduce { acc, i -> acc * i })
println("---")
println("Max long: " + Long.MAX_VALUE)
println("1..13 int: " + (1..13).toList().reduce { acc, i -> acc * i })
println("1..13 long: " + (1L..13L).toList().reduce { acc, i -> acc * i })
}

输出:

Max int: 2147483647
1..12 int: 479001600
1..12 long: 479001600
---
Max long: 9223372036854775807
1..13 int: 1932053504
1..13 long: 6227020800

最多 12,乘法的结果值总是小于 Int.MAX_VALUE而且,正如您在上面看到的,使用 int 和 long 返回的结果是相同的。

从 13 日开始,OTOH,结果发生了变化。使用 int 时s 值溢出,结果开始出错。 long仍然有效(而且,如您所见,返回值大于 Int.MAX_VALUE

关于kotlin - 为什么更高范围的产品对 kotlin 的回答结果为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49568158/

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