common_utils
common_utils copied to clipboard
NumUtil.divide 存在的问题
NumUtil.divide
方法,当 a/b = 1/3
时,
报错信息如下:
'package:decimal/decimal.dart': Failed assertion: line 27 pos 38: '_rational.hasFinitePrecision': is not true.
使用 toDecimal()
方法需要添加 scaleOnInfinitePrecision
参数
NumUtil.divide(3.14, 180);
3.14 / 180 也会出现这样的问题。
貌似只要小数点比较多就会出现:
'package:decimal/decimal.dart': Failed assertion: line 27 pos 38: '_rational.hasFinitePrecision': is not true.
是无理数的情况下,才会出现
找到解决方案了么
找到解决方案了么
我想你可以自己去重写除的方法,去加上 scaleOnInfinitePrecision
这个参数,当然这里也有我的一份作为参考。
double divide(num? num1, num? num2, {int? scaleOnInfinitePrecision) {
final Rational value = Decimal.parse(num1.toString()) / Decimal.parse(num2.toString());
return value
.toDecimal(scaleOnInfinitePrecision: scaleOnInfinitePrecision)
.toDouble();
}