在 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
默认将 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
我正在尝试制作一个应用程序,该应用程序从两个 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
默认将 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