From 0123974678fd313665c1f999011cf39c19251d47 Mon Sep 17 00:00:00 2001 From: Thaddee Tyl Date: Tue, 6 May 2014 10:53:25 +0000 Subject: [PATCH] Add a lot more metric prefixes. --- server.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/server.js b/server.js index f74443a47a..5cfd9a6191 100644 --- a/server.js +++ b/server.js @@ -1089,12 +1089,17 @@ function streamFromString(str) { } // Given a number, string with appropriate unit in the metric system, SI. +// Note: numbers beyond the peta- cannot be represented as integers in JS. +var metricPrefix = ['k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']; +var metricPower = Array.apply(null, Array(metricPrefix.length)) + .map(function(a, i) { return Math.pow(1000, i + 1); }); function metric(n) { - var limit = 1000; - if (n > limit) { - n = Math.round(n / 1000); - return ''+n + 'k'; - } else { - return ''+n; + for (var i = metricPrefix.length - 1; i >= 0; i--) { + var limit = metricPower[i]; + if (n > limit) { + n = Math.round(n / limit); + return ''+n + metricPrefix[i]; + } } + return ''+n; }