Flutter 12.0 can';在颤振中不能识别为双精度、整数或数字
我对dart有这个问题。我创建了一个简单的计算器。如果计算结果等于,例如,-12.9或12.9。应用程序给出了正确答案,没有错误。但是,如果给出的答案是12.0或-12.0,应用程序就会崩溃。为什么呢?我创建了一个函数来检查字符串是int还是double。它返回falseFlutter 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提
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
。而且,它没有崩溃。嗯,我现在真的要走了,我很困惑。谢谢你,我会试着调试它。哦,顺便说一句,有没有办法去掉双精度的十进制值?我会试试这个,非常感谢。我会告诉你最新情况