Dart / Flutter проверяет, является ли значение целым / целым числом - PullRequest
3 голосов
/ 19 сентября 2019

Как проверить, является ли значение целым числом (целым числом) или содержит десятичное число?В Javascript у нас есть isInteger, но я не смог найти эквивалент в Dart.

Кажется, у нас есть проверки для isEven, isOdd, isFinite, isInfinite, isNaN иisNegative но нет isInteger?

Ответы [ 2 ]

3 голосов
/ 19 сентября 2019
void main() {
  int a = 10;
  print(a is int); // Prints true
}

ИЛИ

void main() {
  dynamic a = 10;
  print(a is int ? a/10 :"Not an int"); // Prints 1
}
2 голосов
/ 19 сентября 2019

Дротики (тип num) являются целыми числами (тип int) или двойными (тип double).

Легко проверить, является ли число int,просто сделайте value is int.

Немного более сложная задача - проверить, имеет ли значение double целочисленное значение или нет дробной части.На это нет простой функции ответа, но вы можете сделать value == value.roundToDouble().Это удаляет любую дробную часть из значения double и сравнивает ее с исходным значением.Если они одинаковы, то дробной части не было.

Итак, вспомогательная функция могла бы быть:

bool isInteger(num value) => 
    value is int || value == value.roundToDouble();

Я использую roundToDouble() вместо просто round(), потому что последняятакже преобразует значение в целое число, которое может дать другое значение для больших двойных значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...