dd6716b9a3292ef0429ae8f5fe4e7659770cc145
[platform/framework/web/crosswalk-tizen.git] /
1 var enforcePrecision = require('./enforcePrecision');
2
3     var _defaultDict = {
4         thousand : 'K',
5         million : 'M',
6         billion : 'B'
7     };
8
9     /**
10      * Abbreviate number if bigger than 1000. (eg: 2.5K, 17.5M, 3.4B, ...)
11      */
12     function abbreviateNumber(val, nDecimals, dict){
13         nDecimals = nDecimals != null? nDecimals : 1;
14         dict = dict || _defaultDict;
15         val = enforcePrecision(val, nDecimals);
16
17         var str, mod;
18
19         if (val < 1000000) {
20             mod = enforcePrecision(val / 1000, nDecimals);
21             // might overflow to next scale during rounding
22             str = mod < 1000? mod + dict.thousand : 1 + dict.million;
23         } else if (val < 1000000000) {
24             mod = enforcePrecision(val / 1000000, nDecimals);
25             str = mod < 1000? mod + dict.million : 1 + dict.billion;
26         } else {
27             str = enforcePrecision(val / 1000000000, nDecimals) + dict.billion;
28         }
29
30         return str;
31     }
32
33     module.exports = abbreviateNumber;
34
35