javascript - 使用整数为美分的angularjs货币过滤器

标签 javascript angularjs precision currency

正如您可以在互联网上阅读的那样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/

相关文章:

c - 无符号算术期间高于 ULONG_MAX 的数字

c++ - 如何提高代码的精度

javascript - 添加一个按钮到页面

javascript - 还有什么是规范的 javascript,console.log

javascript - 在 Angular 中添加字符串数组

javascript - angular.js 文本区域字符计数以排除计数空格和换行符

javascript - chrome 扩展中内容脚本的未定义响应

javascript - "Unsubscribe"函数回调/Observable 中的钩子(Hook) "executor"函数

angularjs - angularJS中的同步http调用

Python:检查(非常大的)素数时为 "long int too large to convert to float"