我正在尝试执行以下操作
Number("0.00000000000122")
结果为 1.22e-12
但是我需要的只是那个数字才能从 String
转换为 Number
。
console.log(Number("0.00000000000122"))
答案 0 :(得分:2)
你可以这样做:
console.log(Number("0.00000000000122").toFixed(20).replace(/\.?0+$/,""));
说明:
toFixed()
将保留数字,而 replace()
将删除尾随零
编辑:
您似乎希望 Number("0.00000000000122") 的结果既是一个数字,又要保持字符串为“0.00000000000122”,而不是它的科学显示。 在这种情况下,您可以将其保存为 ts 文件中的数字类型变量,然后将其显示为 HTML 中的字符串
答案 1 :(得分:0)
如果你想使用精确的数字,你必须使用整数。
数字不是整数类型,它是一个浮点数,因此数字在内存中表示为浮点数。数字的 toString 方法只是打印出内存中的值。整数位和点位置。
const scale = 18n;
const digits = 10n ** scale;
const POUND = (number) => BigInt(number) * digits;
const toPound = (number, fraction = false) => {
if (!fraction) {
return String(number / digits);
}
const str = String(number);
if (scale < 1n) {
return str;
}
return `${str.substring(0, Number(BigInt(str.length) - scale))}.${str.substr(-Number(scale))}`;
};
const a = POUND(11000);
const b = POUND(20000);
console.log('scale', String(scale));
console.log('a', toPound(a));
console.log('b', toPound(b));
console.log('mul', toPound((a * b) / digits));
console.log('add', toPound(a + b));
console.log('div', toPound(b / (a / digits), true));
console.log('sub', toPound(b - a));