Swift 基础

关于 iOS 字符串转 Float,Double 的不同国家小数

2020-07-11  本文已影响0人  Ian_

先上代码

extension String {
    func double() -> Double? {
        guard count > 0 else { return nil }
        
        let returnValue:Double? = Double(self)
        if let returnValue = returnValue  {
            return returnValue
        } else {
            if contains(",") {
                let newString = replacingOccurrences(of: ",", with: ".")
                return Double(newString)
            } else if contains(".") {
                let newString = replacingOccurrences(of: ".", with: ",")
                return Double(newString)
            }
            return nil
        }
    }
}

正常我们 String 转 Double 直接就 Double("4.5") 就 ok 了, 而且看起来也没有任何问题,但是小数点,这个符号不仅仅是使用 .国际上使用阿拉伯数字国家与地区主要采用两种小数点符号:“句点”和“逗号”。汉语地区和大多的英语地区都使用“句点”,但是大多的其他欧洲国家和其前殖民地都使用“逗号”。 这段文字摘抄上面的小数点wiki,也就是说,一些欧洲国家是这样表示的 5,4,所以当你手机语言切换到以逗号为小数点的国家时,Double("4.5")就返回 nil 了,所以再看上面那部分代码,如果是正常可以转数字的字符串就直接转了,否则做下面处理。

上一篇 下一篇

猜你喜欢

热点阅读