Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 12.0 can';在颤振中不能识别为双精度、整数或数字_Flutter_Dart - Fatal编程技术网

Flutter 12.0 can';在颤振中不能识别为双精度、整数或数字

Flutter 12.0 can';在颤振中不能识别为双精度、整数或数字,flutter,dart,Flutter,Dart,我对dart有这个问题。我创建了一个简单的计算器。如果计算结果等于,例如,-12.9或12.9。应用程序给出了正确答案,没有错误。但是,如果给出的答案是12.0或-12.0,应用程序就会崩溃。为什么呢?我创建了一个函数来检查字符串是int还是double。它返回false bool isDouble(字符串编号){ 试一试{ num n=num.parse(数字); 如果(n%1==0){ 返回false; }否则{ 返回true; } }捕获(e){ 返回false; } }正如Riwen提

我对dart有这个问题。我创建了一个简单的计算器。如果计算结果等于,例如,-12.9或12.9。应用程序给出了正确答案,没有错误。但是,如果给出的答案是12.0或-12.0,应用程序就会崩溃。为什么呢?我创建了一个函数来检查字符串是int还是double。它返回false

bool isDouble(字符串编号){
试一试{
num n=num.parse(数字);
如果(n%1==0){
返回false;
}否则{
返回true;
}
}捕获(e){
返回false;
}

}
正如Riwen提到的,任何整数%1都是0,即使它是一个浮点数。可以使用.runtimeType检查变量的类型。我认为当您将字符串解析为num时,它会自动将整数转换为int,因此您不能只检查runtimeType==“double”。此外,要删除十进制值,只需使用.floor(),它将向下取整并将变量转换为int

此功能似乎可以工作:

bool isDouble(String number) {
  if (int.tryParse(number) == null){
    if (double.parse(number).isFinite) return true;
  }
  return false;
}

上述函数将返回
false
,因为
12.0%1
等于
0
。而且,它没有崩溃。嗯,我现在真的要走了,我很困惑。谢谢你,我会试着调试它。哦,顺便说一句,有没有办法去掉双精度的十进制值?我会试试这个,非常感谢。我会告诉你最新情况