summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/core/utils.js
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-02-22 16:25:02 +0100
committerChristophe Simonis <chs@odoo.com>2019-02-22 16:25:02 +0100
commit0e7675847f05a63cf013210dabac82c94845217f (patch)
treeae87ad0d0b4d792cb7a17ea1b5428b5d96ce8c56 /addons/web/static/src/js/core/utils.js
parent1af67ffdfa370ade4ea12f227d7c4fae5bc02170 (diff)
parent0f4abc5c228747c7eee79f820fa2ea9c23d73e5f (diff)
[MERGE] forward port branch saas-12.1 up to 0f4abc5c228
Diffstat (limited to 'addons/web/static/src/js/core/utils.js')
-rw-r--r--addons/web/static/src/js/core/utils.js12
1 files changed, 11 insertions, 1 deletions
diff --git a/addons/web/static/src/js/core/utils.js b/addons/web/static/src/js/core/utils.js
index cf64de72eef..44e09933a25 100644
--- a/addons/web/static/src/js/core/utils.js
+++ b/addons/web/static/src/js/core/utils.js
@@ -303,7 +303,17 @@ var utils = {
var d2 = Math.pow(10, decimals);
var val = _t('kMGTPE');
var symbol = '';
- for (var i = val.length - 1 ; i > 0 ; i--) {
+ var numberMagnitude = number.toExponential().split('e')[1];
+ // the case numberMagnitude >= 21 corresponds to a number
+ // better expressed in the scientific format.
+ if (numberMagnitude >= 21) {
+ // we do not use number.toExponential(decimals) because we want to
+ // avoid the possible useless O decimals: 1e.+24 prefered to 1.0e+24
+ number = Math.round(number * Math.pow(10, decimals - numberMagnitude)) / d2;
+ // formatterCallback seems useless here.
+ return number + 'e' + numberMagnitude;
+ }
+ for (var i = val.length; i > 0 ; i--) {
var s = Math.pow(10, i * 3);
if (s <= number / Math.pow(10, minDigits - 1)) {
number = Math.round(number * d2 / s) / d2;