【问题标题】:How to calculate the 6th root of 2 in Swift?如何在 Swift 中计算 2 的 6 次方根?
【发布时间】:2018-06-13 17:34:08
【问题描述】:

我正在尝试在 Swift 中计算 2 的 6 次根,但我找不到合适的函数。

这里有一篇标题为“How to find the nth root of a value?”的帖子,建议使用该解决方案

pow(2, (1/6))

但我认为这不起作用,因为pow 的签名是

func pow(_ x: Decimal, _ y: Int) -> Decimal

所以上述公式的结果是 1 而不是 1.122462... 因为 (1/6) 被四舍五入为 0

iPhone计算器可以做到,所以一定有办法:)

谢谢!

【问题讨论】:

  • 您错过了参考答案中的 "... where base 和 n 是浮点变量"

标签: swift foundation square-root


【解决方案1】:

计算 2 的 6 次根:

pow(2.0, 1.0/6.0)

您只需要使用Doubles。

pow 针对不同的数据类型有多个版本。通过使用浮点字面量,Swift 将推断它们的类型为 Double 并选择带有此签名的 pow

func pow(_: Double, _: Double) -> Double

或者您可以使用对数(x 的第 n 个根是 exp(log(x)/n),其中 xnDoubles:

exp(log(2.0) / 6.0)

【讨论】:

  • 太好了,谢谢!这是否意味着developer.apple.com/documentation/foundation/1779833-pow 的文档有误?
  • 没有。文档没有错。 pow 为不同的数据类型提供了多个版本。
  • 啊,很高兴知道。它在任何地方记录了重载吗?我尝试先阅读内容,但我想我在这里失败了。
  • 我不确定你在这里失败了。我认为只是缺少文档。一旦你实现了正确的事情,命令点击pow 将带你到 Darwin.C.math 中的签名,但这并不能提前帮助你。但是一旦你到了那里,你就可以看到 Darwin 中定义了哪些其他函数。
猜你喜欢
  • 1970-01-01
  • 2017-04-30
  • 2017-01-18
  • 1970-01-01
  • 2016-12-05
  • 2021-01-22
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多