在Dart语言中,一个数字乘以或除以另一个数字会返回错误的结果,我如何避免不四舍五入的错误

6tqwzwtp  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(180)

我把762乘以0.11,但结果是83.82000000000001(不正确)
如何避免这个数字83.82000000000001
我想得到正确的数字83.82
我不想指定小数,因为其他数学运算可能会返回不同小数的数字。

void main(){
  int  number = 762;
  print('number= $number');
  double d =  0.11 * number;
  print('number * 0.11 = $d');
  print('number * 0.11 = ${d.toString()}');
  
  // I don't want to specify the decimals
  print('this is the correct result= ${d.toStringAsFixed(2)}'); 
}

字符串
结果:

number= 762
number * 0.11 = 83.82000000000001
number * 0.11 = 83.82000000000001
this is the correct result= 83.82

axzmvihb

axzmvihb1#

基于double类型的限制,答案是正确的,您可以在这里阅读更多信息:Dart double division precision
但是如果你想以无限的精度进行计算,你可以使用decimal包来做例如。以下内容:

import 'package:decimal/decimal.dart';

void main() {
  Decimal number = Decimal.fromInt(762);
  print('number= $number');
  Decimal d = Decimal.parse('0.11') * number;
  print('number * 0.11 = $d');
}

字符串
它将输出:

number= 762
number * 0.11 = 83.82
number * 0.11 = 83.82

相关问题