簡體   English   中英

在iOS和Swift中使用NSNumberFormatter獲取語言環境

[英]Getting locale with NSNumberFormatter in iOS and Swift

我正在嘗試制作一個從兩個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解決此問題? 對改進class ParallelogramSurfaceArea什么建議嗎?

如果要從字符串轉換為雙NSNumberFormatter並考慮當前本地,則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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM