Int
keine Initialisierer haben Decimal
nehmen, so dass Sie nicht Decimal
-Int
direkt mit einer initializer Syntax wie Int(...)
umwandeln kann.
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
Oder können Sie pow(Double, Double)
wie folgt verwenden:
Sie pow(Decimal, Int)
wie diese verwenden können
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
Aber, wenn Sie nur die Berechnung der Leistung des ganzzahligen Wert auf 2 oder 3, Sowohl pow(Decimal, Int)
als auch pow(Double, Double)
sind bei weitem nicht effizient.
können Sie erklärt eine einfache Funktionen wie squared
oder cubed
wie folgt aus:
func squared(_ val: Int) -> Int {return val * val}
func cubed(_ val: Int) -> Int {return val * val * val}
und sie pow(..., 2)
oder pow(..., 3)
statt verwenden: (. Unter der Annahme, level
ein Int
ist)
let lootBase = cubed(level + 1) * 2
let lootMod = squared(level) * 2
let value = Int(arc4random_uniform(UInt32(lootBase))) + lootMod