最近做flutter项目,需要对数据进行处理,四舍五入保留两位小数,正好有个数据是“0.015”用num.dart 的String toStringAsFixed(int fractionDigits)方法,但是结果却变成了0.01和Java的double计算丢经度应该是一个道理,于是封装了计算工具类

import 'package:decimal/decimal.dart';
import 'package:intl/intl.dart';
/// Num Util.
class NumUtil {
/// The parameter [fractionDigits] must be an integer satisfying: `0 <= fractionDigits <= 20`.
static num getNumByValueStr(String valueStr, {int fractionDigits}) {
double value = double.tryParse(valueStr);
return fractionDigits == null
? value
: getNumByValueDouble(value, fractionDigits);
}
/// The parameter [fractionDigits] must be an integer satisfying: `0 <= fractionDigits <= 20`.
static num getNumByValueDouble(double value, int fractionDigits) {
if (value == null) return null;
String valueStr = value.toStringAsFixed(fractionDigits);

这篇博客介绍了一个Flutter项目的工具类`NumUtil`,该类主要用于数值处理,确保在四舍五入和数学运算中避免精度丢失。通过使用`decimal`库,实现了加、减、乘、除等精确运算,并提供了四舍五入的方法,如`getNumByValueStr`和`toStringAsFixed`,确保在处理如0.015这样的数值时能正确保留两位小数。
最低0.47元/天 解锁文章
2102





