我正在尝试创建一个应用程序,它接收来自两个UITextField的输入,将它们相乘,然后在第三个UITextField中返回产品。

import UIKit

class ParallelogramSurfaceArea: UIViewController {

    @IBOutlet weak var sideA: UITextField!
    @IBOutlet weak var height: UITextField!
    @IBOutlet weak var surfaceArea: UITextField!

    @IBAction func calculate(sender: AnyObject) {

            let aText =  (sideA.text! as NSString).doubleValue
            let hText = (height.text! as NSString).doubleValue

            let a = round(10000 * aText)/10000
            let h = round(10000 * hText)/10000
            let sa = round(10000*(a * h))/10000

            sideA.text = "Side A = \(a) m"
            height.text = "Height = \(h) m"
            surfaceArea.text = "Surface Area = \(sa) m²"
    }

问题是,由于区域设置导致计算错误,因此在小数点处会出现“,”而不是“.”。如何使用NSNumberFormatter修复此问题?有什么改进的建议吗?

最佳答案

如果要将字符串转换为double并考虑当前本地语言环境,NSNumberFormatter默认情况下将local值设置为当前语言环境

let numberFormatter = NSNumberFormatter()
numberFormatter.locale = NSLocale.currentLocale() // default value
// or custom local
numberFormatter.locale = NSLocale(localeIdentifier: "fr_FR")

let stringValue  = sideA.text as? String ?? ""
let doubleValue  = numberFormatter.numberFromString(stringValue)?.doubleValue ?? 0.0

关于ios - 在iOS和Swift中使用NSNumberFormatter获取语言环境,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37144152/

10-12 18:07