META-INF.resources.bower_components.globalize.src.number.format.significant-digits.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jwebmp-globalize Show documentation
Show all versions of jwebmp-globalize Show documentation
The JWebSwing implementation for a full Globalization
define([
"../../common/create-error/unsupported-feature",
"../../util/number/to-precision",
"../../util/string/pad"
], function (createErrorUnsupportedFeature, numberToPrecision, stringPad) {
/**
* toPrecision( number, minimumSignificantDigits, maximumSignificantDigits, round )
*
* @number [Number]
*
* @minimumSignificantDigits [Number]
*
* @maximumSignificantDigits [Number]
*
* @round [Function]
*
* Return the formatted significant digits number.
*/
return function (number, minimumSignificantDigits, maximumSignificantDigits, round) {
var atMinimum, atMaximum;
// Sanity check.
if (minimumSignificantDigits > maximumSignificantDigits) {
maximumSignificantDigits = minimumSignificantDigits;
}
atMinimum = numberToPrecision(number, minimumSignificantDigits, round);
atMaximum = numberToPrecision(number, maximumSignificantDigits, round);
// Use atMaximum only if it has more significant digits than atMinimum.
number = +atMinimum === +atMaximum ? atMinimum : atMaximum;
// Expand integer numbers, eg. 123e5 to 12300.
number = (+number).toString(10);
if ((/e/).test(number)) {
throw createErrorUnsupportedFeature({
feature: "integers out of (1e21, 1e-7)"
});
}
// Add trailing zeros if necessary.
if (minimumSignificantDigits - number.replace(/^0+|\./g, "").length > 0) {
number = number.split(".");
number[1] = stringPad(number[1] || "", minimumSignificantDigits - number[0].replace(/^0+/, "").length, true);
number = number.join(".");
}
return number;
};
});