在 Java 中,货币通常存储在BigDecimal. 但是在 Dart 中用什么来存储货币值呢?BigInt似乎不是一个解决方案,因为它仅适用于整数值。
绝对不要将s 用于double会计应用程序。二进制浮点数本质上无法表示精确的十进制值,这可能会导致看似微不足道的运算的计算不准确。尽管误差很小,但最终会累积成更大的误差。对二进制数设置十进制精度实际上没有意义。
对于货币,您要么应该存储小数值(例如package:decimal),要么应该使用定点算术来存储分(或者您想要跟踪的最小货币量)。例如,不要使用doubles 来存储诸如 $1.23 之类的值,而是使用ints 来存储最小货币单位(例如 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.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1746 次 |
| 最近记录: |