Dart的精确小数计算
layout: post title: “2019-11-25-dart的精确小数计算和展示.markdown” date: 2019-11-25 12:11:30 +0800
- 在dart中double的计算是不精确的,跟java的一样 print(0.1*0.1);
- 使用Decimal进行精确计算 1) 引入
dependencies:
decimal: ^0.3.0
2) 使用decimal进行计算 两个decimal可以进行正常的4则运算 Decimal.parse(‘0.01’) * Decimal.parse(‘0.01’) 获取精确的几位数
Decimal setScale(
Decimal decimal, int scale, Decimal roundMethod(Decimal decimal)) {
Decimal scaleVal = Decimal.fromInt(pow(10, scale));
return roundMethod(decimal * scaleVal) / scaleVal;
}
Decimal setScaleRoundDown(Decimal decimal, int scale) =>
setScale(decimal, scale, (val) => val.floor());
Decimal setScaleRoundUp(Decimal decimal, int scale) =>
setScale(decimal, scale, (val) => val.ceil());
Decimal setScaleRound(Decimal decimal, int scale) =>
setScale(decimal, scale, (val) => val.round());
3) Decimal可以通过字符,num初始化
Decimal.parse(‘0.01’) Decimal.fromInt(10);
4) Decimal 精确几位输出
https://github.com/a14n/dart-decimal/