斯威夫特 - 得到10位十进制数

时间:2018-05-21 07:10:07

标签: swift

如何在Swift中获得十进制数的10位?

例如:

  • 1.20 - > 10
  • 1.90 - > 10
  • 5.50 - > 10

  • 20.30 - > 30

  • 25.50 - > 30
  • 29.00 - > 30

  • 90.0 - > 90

  • 90.1 - > 100
  • 95.50 - > 100
  • 99.01 - > 100

  • 120.0 - > 120

  • 121.1 - > 130
  • 129.5 - > 130

3 个答案:

答案 0 :(得分:1)

这基本上是ceil操作,您只需移动小数点(除以10再乘以10):

func ceilTo10(_ value: Double) -> Int {
    return Int(ceil(value / 10) * 10)
}

print(ceilTo10(1.20)) // 10
print(ceilTo10(90.0)) // 90
print(ceilTo10(121.1)) // 130

答案 1 :(得分:1)

使用rounded(.up)。这是一个有用的扩展:

extension BinaryFloatingPoint {
    func roundedUpNearest10() -> Self {
        return (self / 10).rounded(.up) * 10
    }
}

for num in [ 1.2, 1.9, 5.5, 20.3, 25.5, 29, 90, 90.1, 95.5, 99.01, 120, 121.1, 129.5 ] {
    print(num, num.roundedUpNearest10())
}

输出:

  

1.2 10.0
  1.9 10.0
  5.5 10.0
  20.3 30.0
  25.5 30.0
  29.0 30.0
  90.0 90.0
  90.1 100.0
  95.5 100.0
  99.01 100.0
  120.0 120.0
  121.1 130.0
  129.5 130.0

如果您确实需要Int结果,请更新扩展程序:

extension BinaryFloatingPoint {
    func roundedUpNearest10() -> Int {
        return Int((self / 10).rounded(.up) * 10)
    }
}

答案 2 :(得分:0)

您可以ceil使用此公式10最接近10

示例:

    print(10 * Int(ceil(95.50 / 10)))
    print(10 * Int(ceil(99.1 / 10)))
    print(10 * Int(ceil(99.01 / 10)))
    print(10 * Int(ceil(129.5 / 10)))
    print(10 * Int(ceil(121.1 / 10)))