加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift3 – 如何在Swift 3中使用pow()并获得Int

发布时间:2020-12-14 04:36:00 所属栏目:百科 来源:网络整理
导读:我有以下代码: 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计算时得到的错误是: “无法使
我有以下代码:

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计算时得到的错误是:

“无法使用Decimal类型的参数列表调用int类型的初始值设定项”

如何在Swift 3中使用int函数的pow函数?

解决方法

Int没有使用Decimal的初始化程序,因此您无法使用Int(…)等初始化语法直接将Decimal转换为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)都远没有效率.

您可以像这样声明一个简单的函数,如平方或立方体:

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

(假设级别是Int.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读