【问题标题】:How can I round UP to two decimal places in Swift? [duplicate]如何在 Swift 中四舍五入到小数点后两位? [复制]
【发布时间】:2019-08-26 15:21:00
【问题描述】:

我正在使用下面的代码,并试图让我的“输出值”在按下按钮时向上舍入到小数点后两位。

我在网上找到了各种不同的方法,并尝试将它们结合起来,但没有成功。请有人指出我正确的方向吗?

如果计算结果为 164.98001,那么我希望答案显示为 164.99。

编辑 - 我不认为这是一个重复的问题,因为我的问题涉及四舍五入所有数字。

@IBAction func buttoncalc(_ sender: Any) {
    total.isHidden = false
    let firstValue = Double(text1.text!)
    let secondValue = Double(text2.text!)
    let thirdValue = Double(text3.text!)
    let forthValue = Double(text4.text!)


    if firstValue != nil && secondValue != nil && thirdValue != nil && forthValue != nil {

    let outputvalue = Double(((firstValue! * secondValue!)/1000)*0.5)*(thirdValue! - forthValue!)
    total.text = "£ \(outputvalue)"

    } else {
    total.text = nil
    }
}

【问题讨论】:

  • 顺便说一句,作为重复连接的问题与舍入数字无关向上

标签: swift math decimal rounding


【解决方案1】:

您可以使用NumberFormatter 获取格式化数字为String。只需将小数位数限制为 2 并将 roundingMode 设置为 up

let formatter = NumberFormatter()
formatter.roundingMode = .up
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
let number = 164.98001
print(formatter.string(from: NSNumber(value: number)) ?? "") // 164.99

为了进一步提高你的逻辑,你可以设置格式化程序的numberStylelocale

formatter.numberStyle = .currency
formatter.locale = Locale(identifier: "en_UK")
// £164.99

您的具体用法:

let string = formatter.string(from: NSNumber(value: outputvalue)) ?? ""
total.text = string

【讨论】:

  • 感谢您的回复。请原谅我的新手问题,但我将把上述解决方案放在我的代码中的什么位置?
  • @suxrule 检查编辑
  • 非常感谢为我整理好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 2022-01-12
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多