Dart/Flutter 检查值是否为整数/整数

Has*_*sen 11 integer dart flutter

如何检查值是整数(整数)还是包含小数?在 Javascript 中我们有,isInteger但我在 Dart 中找不到等价物。

我们似乎有检查isEvenisOddisFiniteisInfiniteisNaNisNegative,但没有isInteger

lrn*_*lrn 19

飞镖数字(类型num)是整数(类型int)或双精度(类型double)。

检查数字是否为 很容易int,只需执行value is int

稍微困难一点的任务是检查一个double值是否有整数值,或者没有小数部分。没有简单的函数来回答这个问题,但你可以做value == value.roundToDouble(). 这将从double值中删除任何小数部分并将其与原始值进行比较。如果它们相同,则没有小数部分。

因此,辅助函数可以是:

bool isInteger(num value) => 
    value is int || value == value.roundToDouble();
Run Code Online (Sandbox Code Playgroud)

我使用roundToDouble()而不仅仅是round()因为后者也会将值转换为整数,这可能会为较大的 double 值提供不同的值。

  • 与其他答案不同,这实际上_确实_有效。尽管我认为这将是 Dart 的一部分。因为它有一些不太有用的函数,比如 isOdd、is Even 等,检查起来更简单。 (2认同)

kin*_*ine 7

使用模运算符 %:

  bool isInteger(num value) => (value % 1) == 0;
Run Code Online (Sandbox Code Playgroud)

与扩展方法相同:

  extension NumExtensions on num {
    bool get isInt => (this % 1) == 0;
  }
Run Code Online (Sandbox Code Playgroud)

用法:

  double d = 2.6;
  double d2 = 2.0;
  int i = 2;
  print(d.isInt); // returns false
  print(d2.isInt); // returns true
  print(i.isInt); // returns true
Run Code Online (Sandbox Code Playgroud)


Sha*_*dal 5

void main() {
  int a = 10;
  print(a is int); // Prints true
}
Run Code Online (Sandbox Code Playgroud)

或者

void main() {
  dynamic a = 10;
  print(a is int ? a/10 :"Not an int"); // Prints 1
}
Run Code Online (Sandbox Code Playgroud)