gpt4 book ai didi

swift3 - 如何在 Swift 3 中使用 pow() 并获取 Int

转载 作者:行者123 更新时间:2023-12-02 06:50:42 24 4
gpt4 key购买 nike

我有以下代码:

let lootBase = Int(pow((Decimal(level + 1)), 3) * 2)
let lootMod = Int(pow(Decimal(level), 2) * 2)
value = Int(arc4random_uniform(UInt32(lootBase)) + lootMod)

我需要值才能成为 Int。当我尝试围绕 Int() 的 pow 计算时出现的错误是:

Cannot invoke initializer for type int with an argument list of type Decimal

如何在 Swift 3 中将 pow 函数与 Int 一起使用?

最佳答案

Int 没有采用 Decimal 的初始值设定项,因此您无法直接使用将 Decimal 转换为 Int初始化语法如 Int(...)

您可以像这样使用pow(Decimal, Int):

let lootBase = Int(pow((Decimal(level + 1)), 3) * 2 as NSDecimalNumber)
let lootMod = Int(pow(Decimal(level), 2) * 2 as NSDecimalNumber)

let value = Int(arc4random_uniform(UInt32(lootBase))) + lootMod

或者,您可以像这样使用pow(Double, Double):

let lootBase = Int(pow((Double(level + 1)), 3) * 2)
let lootMod = Int(pow(Double(level), 2) * 2)

let value = Int(arc4random_uniform(UInt32(lootBase))) + lootMod

但是,如果只计算整数值的 2 或 3 次方,pow(Decimal, Int)pow(Double, Double) 都远非高效.

您可以声明一个简单的函数,例如 squaredcubed,如下所示:

func squared(_ val: Int) -> Int {return val * val}
func cubed(_ val: Int) -> Int {return val * val * val}

并使用它们代替 pow(..., 2)pow(..., 3):

let lootBase = cubed(level + 1) * 2
let lootMod = squared(level) * 2

let value = Int(arc4random_uniform(UInt32(lootBase))) + lootMod

(假设level是一个Int。)

关于swift3 - 如何在 Swift 3 中使用 pow() 并获取 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42338009/

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