给定一个双精度值,我想将它舍入到小数点后的精度点,类似于PHP的round()函数。如何在Dart中将小数点后面的双精度加倍到精确的精确度?
我可以在飞镖文档找到最接近的事是double.toStringAsPrecision(),但是这并不完全符合我需要的,因为它包括数字前在精度总点数的小数点。
例如,使用toStringAsPrecision(3):
0.123456789 rounds to 0.123
9.123456789 rounds to 9.12
98.123456789 rounds to 98.1
987.123456789 rounds to 987
9876.123456789 rounds to 9.88e+3
AS号的幅度增加,我相应的小数点后失去精度。
这是目前最好的做这个。舍入到像0.01这样的精度本身不是一个双精度值,这不是微不足道的。结果可能甚至不能表现为双倍。我强烈建议在小数精度很重要的地方使用整数(例如金钱)。 – lrn 2015-02-10 18:16:17
另外值得指出的是,如果编译为js,那么Dart整数也将开始失去精度,您需要使用如下包:https://pub.dartlang.org/packages/bignum – 2015-02-10 22:03:55