首页 > 解决方案 > Objective-C 中的圆形双精度

问题描述

我想在 Objective-C 中将双精度位舍入到小数点后一位。

在 Swift 中,我可以通过扩展来做到这一点:

public extension Double {
    /// Rounds the double to decimal places value
    func rounded(toPlaces places:Int) -> Double {
        let divisor = pow(10.0, Double(places))
        return (self * divisor).rounded() / divisor
    }
}

但是,显然你不能从 Objective-C 调用原语的扩展,所以我不能使用扩展。

我很乐意直接或作为字符串对双精度进行舍入,但是,以下都不起作用:

 double mydub = 122.12022222223322;
 NSString *axtstr = [NSString stringWithFormat:@"%2f", mydub]; //gives 122.120222

 double rounded = (round(mydub*10)) / 10.0; //gives 122.100000

如何转换 122.12022222223322;进入122.1?

标签: objective-cswiftdoublerounding

解决方案


你需要在和之间加上一个%小数2f

[NSString stringWithFormat:@"%.2f", mydub];


推荐阅读