Dart中调用toStringAsFixed触发FormatException异常求助
解决Dart代码中的FormatException问题
你提供的代码本身逻辑是正确的,不会抛出你遇到的FormatException。出现这个异常的核心原因是代码中存在尝试将带小数点的字符串解析为整数的操作(比如误用了int.parse()方法)——int.parse()只能解析纯整数格式的字符串,无法处理像'3.14'这类带小数的内容,因此会抛出无效十进制数的异常。
正确的代码写法
如果你的需求是验证toStringAsFixed(2)的结果是否为'3.14',直接保留原代码的字符串比较即可:
void main() { String piAsString = 3.14159.toStringAsFixed(2); assert(piAsString == '3.14'); }
运行时需开启断言(使用dart run --enable-asserts命令),断言会正常通过,不会抛出异常。
如果你的需求是验证数值是否等于3.14,需要用double.parse()将字符串转为浮点数后再比较:
void main() { String piAsString = 3.14159.toStringAsFixed(2); assert(double.parse(piAsString) == 3.14); }
关键说明
toStringAsFixed(2)会将浮点数格式化为保留两位小数的字符串,结果是'3.14'。int.parse()仅适用于整数字符串,处理带小数的字符串必须使用double.parse()。
内容的提问来源于stack exchange,提问作者Determination
相关产品推荐
相关产品推荐

