我希望创建一个函数,这个函数可以接收输入值并将其转换为科学计数法(N x 10^a)。
我尝试了许多不同的方法,但好像都不对。
例如:
我输入200。该转换器将其转换为2 x 10^2。
我尝试了许多不同的方法,但好像都不对。
例如:
我输入200。该转换器将其转换为2 x 10^2。
toExponential
方法和 toFixed
方法一样,也接受一个 digits
参数来控制指数符号前的小数部分保留几位数字。 - Ahmed Fasih曾经我想将系数和指数作为数字使用。
如果您想这样做,可以使用toExponential
函数,拆分字符串并转换数组中的项为数字。
在下面的示例中,我把数字赋值给numInSciNot
对象,并按所需格式打印它们。
const num = 200;
const numInSciNot = {};
[numInSciNot.coefficient, numInSciNot.exponent] =
num.toExponential().split('e').map(item => Number(item));
console.log(`${numInSciNot.coefficient} x 10^${numInSciNot.exponent}`);
如果您不想将它们用作数字,只需使用replace
:
const num = 200;
console.log(num.toExponential().replace(/e\+?/, ' x 10^'));
在这段代码中,我使用了RegExp来替换e
或e+
(在正指数的情况下)。
如果你想指定小数点后的位数,可以在上面的例子中使用toExponential(NumberOfDigits)
。
num.toExponential().split('e').map(Number)
。 - JP Lewfunction writeScientificNum(p_num, p_precision) {
var n = Math.round(Math.log10(a));
var m = (p_num * (Math.pow(10,Math.abs(n)))).toFixed(p_precision);
document.getElementById("outputTxt").innerHTML = m.toString() + ' x 10<sup>' + n.toString() + '</sup>';
}
请测试一下:http://jsfiddle.net/u1hd4zm9/
唯一奇怪的事情是,toFixed方法(至少在Chrome中)不会将刚好一半的数字四舍五入上去,而是向下。例如,如果你运行这段代码:
var test = 2.55;
alert(test.toFixed(1));
var test = 2.5;
alert(test.toFixed(0));