DART:存储货币的最佳类型 [英] Dart: best type to store currency

查看:35
本文介绍了DART:存储货币的最佳类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

in Java货币通常存储在BigDecimal中。但在DART中使用什么来存储货币值?BigInt似乎不是解决方案,因为它仅适用于整数值。

推荐答案

绝对不要double用于记帐应用程序。二进制浮点数天生不能表示精确的十进制值,这可能导致inaccurate calculations for seemingly trivial operations。即使误差很小,它们最终也会累积成更大的误差。对二进制数设置小数精度没有实际意义。

对于货币,您应该使用旨在存储小数值的东西(例如package:decimal),或者使用fixed-point arithmetic来存储美分(或您想要跟踪的任何最小货币数量)。例如,不使用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.
}

这篇关于DART:存储货币的最佳类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆