您可以通过互联网阅读using floats to represent currency is a very bad idea。建议的最佳做法是使用代表美分的整数。通过这种方式,您可以安全地避免遇到任何精确问题,尤其是在您进行某些计算时。
由于我天真而且过于乐观,我选择了 - 尽管有所有警告 - 浮动代表我的应用程序中的货币。起初它进展顺利。现在我遇到各种各样的问题(特别是比较),并希望从浮点数切换到整数。
不幸的是,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);
};
}]);
答案 0 :(得分:2)
缺点可能与Angular首先支持抛出美分的原因相同:not all currencies use 100 as their base(向下扫描该表的基数'列。 )