Проверьте, является ли число десятичным с быстрым

Как я могу проверить, является ли число десятичным или не использовать swift?

С Objective-C:

if (number == (int) number) {
  //decimal
}
else {
  //not decimal
}

Ответ 1

Если вы округлите число вниз (что вы можете сделать, используя функцию пола), а затем вычтите его из исходного номера, вы получите разницу между ними.

if (number - floor(number) > 0.000001) { // 0.000001 can be changed depending on the level of precision you need
    // decimal
}

Изменить -

В моем первоначальном ответе рекомендуется рассчитать разницу между числом и его эквивалентом пола, чтобы увидеть, есть ли какие-либо единицы после десятичных точек. Однако, как описано ниже, может быть ошибка округления, которая приводит к тому, что представление значения в памяти будет немного отличаться от того, что оно на самом деле означает.

Например, 3.0 может быть представлено как 3.00000000000001, и поэтому number - floor(number) > 0 вернет true, хотя теоретически он должен был бы возвратить false, поскольку смещение будет 0.00000000000001.

Поэтому, пожалуйста, используйте @jessy ответ ниже.

Ответ 2

extension FloatingPoint {
  var isInteger: Bool {
    return rounded() == self
  }
}

Ответ 3

Swift:

if number.rounded(.up) == number.rounded(.down){
    //number is integer
}else{
    //number is not integer
}