正如您可以在互联网上阅读的那样using floats to represent currency is a very bad idea .推荐的最佳做法是改用代表美分的整数。这样您就不会遇到任何精度问题,尤其是在您进行一些计算时。
由于我天真且过于乐观,我选择了 - 尽管有所有警告 - float 来表示我应用程序中的货币。一开始进展顺利。现在我遇到了各种问题(尤其是比较问题),想从 float 切换到整数。
不幸的是,angular 不支持美分整数作为货币过滤器的输入(至少据我所知)。我有点惊讶,到目前为止似乎还没有人提出这个问题(github 上没有相应的问题,SO 上也没有,等等)。
有什么最佳实践吗?您能想到像这样的简单过滤器可能有的任何缺点吗:
angular
.module('myApp')
.filter('cents', ['$filter', function($filter) {
return function(cents, symbol, fractionSize) {
var asFloat = cents / 100;
return $filter('currency')(asFloat, symbol, fractionSize);
};
}]);
最佳答案
缺点可能与 Angular 一开始不支持乱扔硬币的原因相同:not all currencies use 100 as their base (向下扫描该表的“基本数字”列。)
关于javascript - 使用整数为美分的angularjs货币过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38460031/