From 2cfa109283dbebdba41ac333a49641abfbf8d959 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Thu, 16 Apr 2015 15:19:56 -0700 Subject: [PATCH] Add CRM.sigfig utility --- js/Common.js | 7 +++++++ tests/karma/unit/sigfigSpec.js | 14 ++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 tests/karma/unit/sigfigSpec.js diff --git a/js/Common.js b/js/Common.js index 4950046ee0..c77d649635 100644 --- a/js/Common.js +++ b/js/Common.js @@ -1378,4 +1378,11 @@ CRM.strings = CRM.strings || {}; CRM.checkPerm = function(perm) { return CRM.permissions[perm]; }; + + // Round while preserving sigfigs + CRM.sigfig = function(n, digits) { + var len = ("" + n).length; + var scale = Math.pow(10.0, len-digits); + return Math.round(n / scale) * scale; + }; })(jQuery, _); diff --git a/tests/karma/unit/sigfigSpec.js b/tests/karma/unit/sigfigSpec.js new file mode 100644 index 0000000000..9b593b3d63 --- /dev/null +++ b/tests/karma/unit/sigfigSpec.js @@ -0,0 +1,14 @@ +'use strict'; + +describe('CRM.sigfig', function() { + it('should round while preserving significant digits', function(){ + expect(CRM.sigfig(9, 1)).toBe(9); + expect(CRM.sigfig(172, 1)).toBe(200); + expect(CRM.sigfig(172, 2)).toBe(170); + expect(CRM.sigfig(176, 2)).toBe(180); + expect(CRM.sigfig(1492, 1)).toBe(1000); + expect(CRM.sigfig(1492, 2)).toBe(1500); + expect(CRM.sigfig(1492, 3)).toBe(1490); + expect(CRM.sigfig(10943, 3)).toBe(10900); + }); +}); -- 2.25.1