我只是用简单pow()
的计算Int.min
。我们知道的Int64.min
是:
-9_223_372_036_854_775_808
但是当我将pow()与该向下代码一起使用时,我的答案确实不正确!为什么?
let Int64Min = -pow(2.0, 64)/2
这给了我们这个:
-9_223_372_036_854_776_000
例如,对于像这样的较小数字,它可以正常工作:
let Int8Min = -pow(2.0, 8)/2
给出正确的答案,Int8.min
它是:
-128
但是为什么不能使用Power 64?
您使用的是错误版本的pow
。您需要使用带有Decimal
asx
而不是a的版本Double
。Double
不能代表所有整数,因此会遇到舍入错误。另一方面,Decimal
它能够表示所有整数,因此使用您的Decimal
版本pow
可以获得正确的结果。
let int64min = -pow(2, 64)/2
print(int64min) // -9_223_372_036_854_775_808
int64min == Decimal(Int64.min) // true
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句