gpt4 book ai didi

swift - 做简单数学时的奇怪结果

转载 作者:搜寻专家 更新时间:2023-11-01 07:26:19 26 4
gpt4 key购买 nike

我的代码是

let m = 39
let maxPower = pow(3.0, Double(m))

if (Int(maxPower) % 3) == 0 {
return true
} else {
return false
}

为什么返回false?

最佳答案

这是由于 Swift 中 Double 的精度(以及一般的 float )。运行

let power = pow(3.0, Double(39))
print(power)

会打印4.05255515301898e+18,但是339的实际值为4.052555153018976267e+18,或者4052555153018976267(注意最后的 76267)

运行时

let mod = 4052555153018976267 % 3

该值符合预期,为 0。正如 rob mayoff 指出的那样,double的实际存储值为4052555153018976256。运行时

let mod = 4052555153018976256 % 3

结果是 1,这就是你所经历的。这就是为什么运行时value等于1的原因

let value = pow(3.0, Double(39)) % 3

关于swift - 做简单数学时的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35906164/

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