美文网首页Swift 基础
关于 iOS 字符串转 Float,Double 的不同国家小数

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

作者: Ian_ | 来源:发表于2020-07-11 00:42 被阅读0次

先上代码

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 了,所以再看上面那部分代码,如果是正常可以转数字的字符串就直接转了,否则做下面处理。

相关文章

网友评论

    本文标题:关于 iOS 字符串转 Float,Double 的不同国家小数

    本文链接:https://www.haomeiwen.com/subject/xhqbcktx.html