Int(Double(pow(x, y))) ...[即Decimal到Double到Int的转换,一次完成] 但是,这两种方法都会导致相同的Ambiguous use of 'pow'错误(下面的屏幕截图)。
然而,有趣的是,如果我们将第二个选项分成两行代码,即: a)Decimal to Double,然后 B)Double to Int ...它的工作原理就像一个魅力! 下面是您想要的确切函数,而不必直接使用Int值(根据需要):
func getGigaSeconds(from seconds: Int) -> Int {
let gigaPower: Double = pow(10, 9)
let gigaSeconds = seconds * Int(gigaPower)
return gigaSeconds
}
编辑:
Apple Developer文档显示,pow()函数的y参数是Int,而x和return-type都是Decimal。
结论:
以下变体可以工作:
// 1) `y` is a `Double`
let gigaSeconds = Int(pow(10, Double(9)))
// 2) `x` is a `Double`
let gigaSeconds = Int(pow(Double(10), 9))
// 3) Both, `x` and `y` are `Double`
let gigaSeconds = Int(pow(Double(10), Double(9)))
// 4) Both, `x` and `y` are `Int` but the end result is a `Double` (which is then converted to an `Int`
let gigaPower: Double = pow(10, 9)
let gigaSeconds = seconds * Int(gigaPower)
2条答案
按热度按时间wwtsj6pe1#
请注意:
pow()
函数返回decimal
值。并且,要将这个
decimal
值转换为Int
值,可以简单地考虑以下两个中的任何一个:Int(pow(x, y))
...[即直接将Decimal
转换为Int
]Int(Double(pow(x, y)))
...[即Decimal
到Double
到Int
的转换,一次完成]但是,这两种方法都会导致相同的
Ambiguous use of 'pow'
错误(下面的屏幕截图)。然而,有趣的是,如果我们将第二个选项分成两行代码,即:
a)
Decimal to Double
,然后B)
Double to Int
...它的工作原理就像一个魅力!
下面是您想要的确切函数,而不必直接使用
Int
值(根据需要):编辑:
Apple Developer文档显示,
pow()
函数的y
参数是Int
,而x
和return-type
都是Decimal
。结论:
以下变体可以工作:
hlswsv352#
使用Double
或者直接使用Int值