如何在Swift中四舍五入到小数点后两位?

时间:2019-04-04 19:01:36

标签: swift math decimal rounding

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

我在网上找到了各种不同的方法,并试图将它们合并在一起,但是没有运气。可以请我指出正确的方向吗?

如果计算结果为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
    }
}

1 个答案:

答案 0 :(得分:2)

您可以使用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