使用带有整数美分的angulars货币过滤器

时间:2016-07-19 13:28:55

标签: javascript angularjs precision currency

您可以通过互联网阅读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);
        };
    }]);

1 个答案:

答案 0 :(得分:2)

缺点可能与Angular首先支持抛出美分的原因相同:not all currencies use 100 as their base(向下扫描该表的基数'列。 )