DART:存储货币的最佳类型 [英] Dart: best type to store currency
本文介绍了DART:存储货币的最佳类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
in Java货币通常存储在BigDecimal
中。但在DART中使用什么来存储货币值?BigInt
似乎不是解决方案,因为它仅适用于整数值。
推荐答案
绝对不要将double
用于记帐应用程序。二进制浮点数天生不能表示精确的十进制值,这可能导致inaccurate calculations for seemingly trivial operations。即使误差很小,它们最终也会累积成更大的误差。对二进制数设置小数精度没有实际意义。
对于货币,您应该使用旨在存储小数值的东西(例如package:decimal
),或者使用fixed-point arithmetic来存储美分(或您想要跟踪的任何最小货币数量)。例如,不使用double
s来存储$1.23之类的值,而是使用int
s以最小的货币单位(例如123美分)来存储金额。然后,您可以使用帮助器类来格式化显示的金额。例如:
class Money {
int cents;
Money({required this.cents});
@override
String toString() => (cents / 100).toStringAsFixed(2);
Money operator +(Money other) => Money(cents: cents + other.cents);
// Add other operations as desired.
}
这篇关于DART:存储货币的最佳类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文