Swift - получите 10-е место десятичного числа - PullRequest
0 голосов
/ 21 мая 2018

Как я могу получить десятичное число десятичного числа в Swift?

Например:

  • 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 голосов
/ 21 мая 2018

Вы можете использовать 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)))
0 голосов
/ 21 мая 2018

Используйте 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)
    }
}
0 голосов
/ 21 мая 2018

Это в основном 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...