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

Fre*_*mer 7 javascript precision currency angularjs

正如你可以通过互联网阅读使用浮动代表货币是一个非常糟糕的主意.建议的最佳做法是使用代表美分的整数.这样就可以安全地避免遇到任何精度问题,尤其是在进行一些计算时.

因为我天真而且过于乐观,我选择了 - 尽管有所有警告 - 浮动代表我的应用程序中的货币.起初它进展顺利.现在我遇到了各种各样的问题(特别是比较),并希望从浮点数切换到整数.

不幸的是,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);
        };
    }]);
Run Code Online (Sandbox Code Playgroud)

sea*_*lea 2

其缺点可能与 Angular 最初不支持抛硬币的原因相同:并非所有货币都使用 100 作为基数(向下扫描该表的“数字到基本”列。)