UNPKG

nbit-arco

Version:

Arco Design React UI Library.

47 lines (46 loc) 1.92 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.toSafeString = exports.toFixed = void 0; var number_precision_1 = __importDefault(require("number-precision")); /** * Replace number.toFixed with Math.round */ function toFixed(number, precision) { var pow = Math.pow(10, precision); return (Math.round(number * pow) / pow).toFixed(precision); } exports.toFixed = toFixed; /** * Convert number to non-scientific notation */ function toSafeString(number) { // Use native Number.toString when it is NaN or non-scientific notation var nativeNumberStr = number.toString(); if (Number.isNaN(+number) || !nativeNumberStr.includes('e')) { return nativeNumberStr; } try { var isNegative = number < 0; var absoluteValue = Math.abs(+number); // Get decimal length var digitLength_1 = number_precision_1.default.digitLength(absoluteValue); // Convert decimal to integer var integerNum = number_precision_1.default.float2Fixed(absoluteValue); // Convert integer to non-scientific notation string var integerStr_1 = integerNum .toString() .replace(/e\+(\d+)/i, function (_, $1) { return new Array(+$1).fill(0).join(''); }); return "" + (isNegative ? '-' : '') + (digitLength_1 === 0 ? integerStr_1 : integerStr_1.replace(new RegExp("\\d{1," + digitLength_1 + "}$"), function (match) { var decimalStr = ("" + new Array(digitLength_1).fill(0).join('') + match).slice(-digitLength_1); return (integerStr_1.length <= digitLength_1 ? 0 : '') + "." + decimalStr; })); } catch (e) { } return nativeNumberStr; } exports.toSafeString = toSafeString;