繁体   English   中英

基本的iOS小数修剪

[英]Basic iOS Decimal Trim

我有浮点值1.96,然后我想将1.9显示为字符串,如果我使用String(format:“%.1f”)结果是2.0,我也尝试使用NumberFormatter作为扩展名

    let formatter = NumberFormatter()
    formatter.numberStyle = .decimal
    formatter.maximumFractionDigits = 1
    formatter.minimumFractionDigits = 1

    return formatter.string(for:  self)!

但是结果还是2.0

有什么最好的方法来达到1.96到1.9?

老把戏:

var yourResult = Double(floor(10*yourDecimalDigit)/10)

// yourResult = 1.9

转换成这样的字符串

var string = String(yourResult)

您可以使用Double的常规扩展名来截断double值。

迅捷4.0

extension Double {
    func truncate(places : Int)-> Double {
        return Double(floor(pow(10.0, Double(places)) * self)/pow(10.0, Double(places)))
    }
}

在下面这样使用

let trimedValue = 1.96.truncate(places: 1) // 1.9

也许有些方法可以为您提供帮助,但我喜欢自己做

延期 :

extension CGFloat{

    var onlyOneDigits : String {
        var str = "\(self)"
        let count = str.count 
        if self >= 1000 && self < 10000{
            str.removeLast(count - 6)
            return str
        }else if self >= 100{
            str.removeLast(count - 5)
            return str
        }else if self >= 10{
            str.removeLast(count - 4)
            return str
        }else{
            str.removeLast(count - 3)
            return str
        }
    }
}

用它 :

        let myFloat : CGFloat = 1212.1212
        let myStr : String = myFloat.onlyOneDigits
        print(myStr) // 1212.1

        let anotherFloat : CGFloat = 1.96
        let anotherStr : String = anotherFloat.onlyOneDigits
        print(anotherStr) // 1.9

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM