【问题标题】:not work round Float for swift 4 [duplicate]swift 4的浮点数不起作用[重复]
【发布时间】:2018-06-08 18:32:58
【问题描述】:
让值:Float = 5.678434
让 roundedValue = round(value * 100) / 100

roundedValue 浮点数 5.6784339

如何获得 5.67 或 5.68?

【问题讨论】:

  • 由于二进制浮点数的精度有限(请参阅stackoverflow.com/questions/588004/…),结果可能与 5.68 不同,但应该接近 5.68 而不是 5.6784339。你确定你打印的是正确的变量吗?
  • 我这里也是5.68,不知道你检查是否正确。另外,也许用roundf而不是round检查。
  • 如果你想正确地四舍五入到小数点后第n位,你应该使用Decimal,而不是Float

标签: swift rounding swift4


【解决方案1】:
extension Float {
    func rounded(toPlaces places:Int) -> Float {
        let divisor = pow(10.0, Float(places))
        return (self * divisor).rounded() / divisor
    }
}

let floatNumber:Float = 3.67565676

print(floatNumber.rounded(toPlaces: 2)) 

//打印 3.68

【讨论】:

  • 这是 OP 已经做的,只是作为扩展方法编写的。您的回答没有说​​明问题,或者您的代码如何解决问题。
  • 问题很清楚“如何获得 5.67 或 5.68?”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
  • 2018-10-30
相关资源
最近更新 更多