gpt4 book ai didi

swift - 使用 pow() 函数生成 Decimal 时接收 NaN 作为输出

转载 作者:行者123 更新时间:2023-11-30 12:00:31 24 4
gpt4 key购买 nike

我已经研究了好几个小时了,所以如果我遗漏了一些明显的东西,请原谅我。

我正在使用 pow(_ x: Decimal, _ y: Int) -> Decimal 函数通过基本公式帮助生成每月付款金额。我将此函数链接到 infix 运算符 *** 但我尝试仅通过键入该函数来使用它并遇到相同的问题。

Xcode 昨天因为公式太长而对我大喊大叫,所以我将其分解为几个常量,并将其合并到我需要的整体公式中。

代码:

precedencegroup PowerPrecedence { higherThan: MultiplicationPrecedence }
infix operator *** : PowerPrecedence
func *** (radix: Decimal, power: Int) -> Decimal {
return (pow((radix), (power)))
}

func calculateMonthlyPayment() {
let rateAndMonths: Decimal = ((0.0199 / 12.0) + (0.0199 / 12.0))
let rateTwo: Decimal = ((1.0+(0.0199 / 12.0)))
loan12YearsPayment[0] = ((rateAndMonths / rateTwo) *** 144 - 1.0) * ((values.installedSystemCost + loanFees12YearsCombined[0]) * 0.7)

当我打印到控制台或在模拟器中运行它时,输出为NaN。我知道 pow 函数本身工作正常,因为我已经用随机整数尝试过它。

最佳答案

请找出我对这个Apple函数实现的观点,请注意以下示例:

pow(1 as Decimal, -2) // 1; (1 ^ Any number) = 1 
pow(10 as Decimal, -2) // NAN
pow(0.1 as Decimal, -2) // 100
pow(0.01 as Decimal, -2) // 10000
pow(1.5 as Decimal, -2) // NAN
pow(0.5 as Decimal, -2) // NAN

看起来,带小数的 pow 不考虑除 10 基数之外的任何 float 。所以它涉及:

0.1 ^ -2 == (1/10) ^ -2 == 10 ^ 2 // It calculates it appropriately, It's 10 basis 10, 100, 1000, ...

1.5 ^ -2 == (3/2) ^ -2 // (3/2) is a floating number ,so deal with it as Double not decimal, It returns NAN.

0.5 ^ -2 == (1/2) ^ -2 // (2) isn't 10 basis, So It will be dealt as (1/2) as It is, It's a floating number also. It returns NAN.

关于swift - 使用 pow() 函数生成 Decimal 时接收 NaN 作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47301315/

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