swift - Xcode Swift 赚大钱

标签 swift nsnumberformatter

我有这段代码可以打印出一笔钱,但有时如果金额是 10 美分的倍数,比如 22.50 美元或 189.20 美元,用户界面会砍掉最后的 0 以显示 22.5 美元或 189.2 美元?

@IBAction func btnCalPress(sender: AnyObject) {
    let tipPer = Double(PercentTip.text!)! / 100
    let billAmt = Double(BillAmount.text!)
    let salesTax = Double(SalesTax.text!)! / 100

    let tipAmt = Double(billAmt! * tipPer)
    let taxAmt = Double(billAmt! * salesTax)
    let totalAmt = tipAmt + taxAmt + billAmt!

    let tipAmountFormat = round(tipAmt * 100) / 100
    let taxAmountFormat = round(taxAmt * 100) / 100
    let totalPayFormat = round(totalAmt * 100) / 100

    TipAmount.text = "Tip: $\(tipAmountFormat)"
    TaxAmount.text = "Tax: $\(taxAmountFormat)"
    TotalAmount.text = "Total: $\(totalPayFormat)"
}

最佳答案

在处理货币时,更容易依赖 NSNumberFormatter,它恰好也处理一些货币的特殊性。

应用于您的代码将是:

@IBAction func btnCalPress(sender: AnyObject) {
    let tipPer = Double(PercentTip.text!)! / 100
    let billAmt = Double(BillAmount.text!)!
    let salesTax = Double(SalesTax.text!)! / 100

    let tipAmt = Double(billAmt * tipPer)
    let taxAmt = Double(billAmt * salesTax)
    let totalAmt = tipAmt + taxAmt + billAmt

    let formatter = NSNumberFormatter()
    formatter.numberStyle = .CurrencyStyle

    let tipAmount = formatter.stringFromNumber(tipAmt)!
    let taxAmount = formatter.stringFromNumber(taxAmt)!
    let totalAmount = formatter.stringFromNumber(totalAmt)!

    TipAmount.text = "Tip: \(tipAmount)"
    TaxAmount.text = "Tax: \(taxAmount)"
    TotalAmount.text = "Total: \(totalAmount)"
}

关于swift - Xcode Swift 赚大钱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37231987/

相关文章:

ios - 如何让 SCNTransaction 结束

ios - 如何自定义tableView编辑模式ios

swift - SpriteKit 场景切换时的内存问题

iphone - 使用 NSNumberFormatter 从国际货币字符串中获取十进制值

ios - Xcode 7 上的 Swift 发生 fatal error

swift - SKLabelNode 移动。但 Action 不重复

swift - NSNumberFormatter stringFromNumber 应该能够接受 Swift.Int 吗?

swift - 无法将类型 'String' 的值转换为预期的参数类型 'NSNumber'

ios - iOS MeasurementFormatter中的零符号

ios - NSNumberformatter 添加额外的零