給定一個雙精度值,我想將它舍入到小數點後的精度點,類似於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