You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart/Flutter如何检查值是否为整数?无isInteger方法解决方案

在Dart中检查值是否为整数或包含小数的解决方案

嘿,我懂你的困扰——Dart确实没有JavaScript里那种现成的isInteger方法,但咱们完全可以通过几个简单的方式实现这个需求,不管是判断一个值是否为整数,还是检查它是否包含小数,都能轻松搞定。

方法一:利用类型判断与数值对比

首先,Dart里的数值类型分为int和double,我们可以先判断是否是int类型,对于double类型则判断它转成整数后是否和自身相等:

bool isInteger(num value) {
  // 先判断是否是int类型,或者是等于自身整数形式的double
  return value is int || (value is double && value == value.toInt());
}

举个实际测试的例子:

  • isInteger(10) → true(本身就是int类型)
  • isInteger(10.0) → true(double类型但数值等于整数)
  • isInteger(10.5) → false(double类型且包含小数部分)

方法二:使用取余运算更简洁

另一种更简洁的方式是利用对1取余等于0的特性——所有整数(包括int和值为整数的double)对1取余的结果都是0,而带小数的double则不是。同时我们可以先过滤掉NaN、无穷大这类无效数值:

bool isInteger(num value) {
  // 排除NaN、无穷大这类不符合要求的特殊值
  if (!value.isFinite) return false;
  return value.remainder(1) == 0;
}

这个方法能自动兼容int和double类型,不用额外做类型判断,逻辑更紧凑。

检查是否包含小数

如果要判断一个值是否包含小数部分,只需要对上面的isInteger方法取反即可:

bool hasDecimal(num value) {
  return !isInteger(value);
}

测试效果:

  • hasDecimal(10.5) → true
  • hasDecimal(10) → false
  • hasDecimal(10.0) → false

这样就能完美替代你想要的isInteger功能啦,根据你的场景选合适的方法就行~

内容的提问来源于stack exchange,提问作者Hasen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:58:31