gpt4 book ai didi

xcode - 初始化器 'init(_:)' 要求 'Decimal' 符合 'BinaryInteger'

转载 作者:行者123 更新时间:2023-12-04 16:40:50 28 4
gpt4 key购买 nike

我正在尝试制作一个复利计算器应用程序,当我返回复利公式时出现此错误 -> Initializer 'init(_:)' 要求 'Decimal' 符合 'BinaryInteger'

执行复利公式时出现错误:
返回余额 * pow((1 + rate/100), Int(mounths))

struct CompoundView: View {
@State var accountBalance: Decimal?
@State var percentagePerMounth: Decimal?
@State var numberOfMounths: Decimal?

@State var totalCompoundInterest = " "

var total: Decimal {
guard let balance = self.accountBalance, let rate = self.percentagePerMounth, let mounths = self.numberOfMounths else {
return 0
}
return balance * pow((1 + rate / 100), Int(mounths))
}

// Currency Formater
static var currencyFormatter: NumberFormatter {
let nf = NumberFormatter()
nf.numberStyle = .currency
nf.isLenient = true
return nf
}

// Percent Formatter
static var percentFormatter: NumberFormatter {
let nf = NumberFormatter()
nf.numberStyle = .percent
// preserve input as-is, otherwise 10 becomes 0.1, which makes
// sense but is less intuitive for input
nf.multiplier = 1
nf.isLenient = true
return nf
}

// Months Formatter
static var monthsFormatter: NumberFormatter {
let nf = NumberFormatter()
nf.numberStyle = .decimal
nf.isLenient = true
return nf
}

// Compound Interest View
var body: some View {

VStack {
HStack {
Text("Start Balance")
.font(.subheadline)
.padding(.vertical)
Spacer()
DecimalField("$0.00", value: $accountBalance, formatter: Self.currencyFormatter)
.keyboardType(.decimalPad)
.font(.largeTitle)
.multilineTextAlignment(.trailing)
}
.foregroundColor(.white)
Divider().background(Color.white)

HStack {
Text("Percentage per month")
.font(.subheadline)
.padding(.vertical)
Spacer()
DecimalField("0%", value: $percentagePerMounth, formatter: Self.percentFormatter)
.keyboardType(.decimalPad)
.font(.largeTitle)
.multilineTextAlignment(.trailing)
}
.foregroundColor(.white)
Divider().background(Color.white)

HStack {
Text("Number of months")
.font(.subheadline)
.padding(.vertical)
Spacer()
DecimalField("0", value: $numberOfMounths, formatter: Self.monthsFormatter)
.keyboardType(.decimalPad)
.font(.largeTitle)
.multilineTextAlignment(.trailing)
}
.foregroundColor(.white)
Divider().background(Color.white)

// Calculate Button
Button(action: {
hideKeyboard()
self.totalCompoundInterest = Self.currencyFormatter.string(for: self.total)!

}) {
Text("Calculate")
.font(.body)
.foregroundColor(Color.white)
}

Text(self.totalCompoundInterest)
.foregroundColor(.white)
.font(.largeTitle)
.padding()

Spacer()
}
}

}

最佳答案

您需要将 mounths 正确转换为 Int。像这样:

Int(truncating: mounths as NSNumber))

所以你在 init 中的最后一行看起来像这样:
return balance * pow((1 + rate / 100), Int(truncating: mounths as NSNumber))

关于xcode - 初始化器 'init(_:)' 要求 'Decimal' 符合 'BinaryInteger',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61090503/

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