Javascript 将小数点四舍五入到前两位有效数字

Javascript 将小数点四舍五入到前两位有效数字,javascript,ecmascript-6,rounding,Javascript,Ecmascript 6,Rounding,我有一个例子,我必须把小数四舍五入到前两个有效数字 输入示例:[0.0000007123123123,0.0000000012321,0.0125] 预期输出:[0.00000071,0.0000000013,0.013]这是我的解决方案,但我想这可以做得更简单。 const set=[0.0000007123123123,0.0000000012321,0.0125,1.1005,0.1511,1.51231e-10,10.1505,1.511e3] 设roundDecimal=(值,精度=1

我有一个例子,我必须把小数四舍五入到前两个有效数字

输入示例:
[0.0000007123123123,0.0000000012321,0.0125]


预期输出:
[0.00000071,0.0000000013,0.013]

这是我的解决方案,但我想这可以做得更简单。
const set=[0.0000007123123123,0.0000000012321,0.0125,1.1005,0.1511,1.51231e-10,10.1505,1.511e3]
设roundDecimal=(值,精度=1)=>{
让FirstSignifictDigitPlace=e=>parseInt(e.toExponential().split('-')[1])| | Math.min(精度,1)
if(数组.isArray(值)){
返回set.map(e=>{
if(typeof e!=“number”)抛出“roundDecimal:数组应仅包含数字。”
返回e.toFixed(第一个有效数字位置(e)+精度)
})
}else if(值的类型=='number'){
返回值.toFixed(第一个有效数字位置(值)+精度)
}
throw“roundDecimal:函数只接受数组或数字作为值。”
}
console.log(roundDecimal(.0051101))
console.log(roundDecimal(set))
控制台日志(roundDecimal(set,3))
控制台日志(整数十进制(5.153123e-15))

log(roundDecimal(Number.NaN))
这是我的解决方案,但我想这可以做得更简单。
const set=[0.0000007123123123,0.0000000012321,0.0125,1.1005,0.1511,1.51231e-10,10.1505,1.511e3]
设roundDecimal=(值,精度=1)=>{
让FirstSignifictDigitPlace=e=>parseInt(e.toExponential().split('-')[1])| | Math.min(精度,1)
if(数组.isArray(值)){
返回set.map(e=>{
if(typeof e!=“number”)抛出“roundDecimal:数组应仅包含数字。”
返回e.toFixed(第一个有效数字位置(e)+精度)
})
}else if(值的类型=='number'){
返回值.toFixed(第一个有效数字位置(值)+精度)
}
throw“roundDecimal:函数只接受数组或数字作为值。”
}
console.log(roundDecimal(.0051101))
console.log(roundDecimal(set))
控制台日志(roundDecimal(set,3))
控制台日志(整数十进制(5.153123e-15))

console.log(roundDecimal(Number.NaN))
您可以使用
Number.toPrecision

我在这里还使用了
toLocaleString
,以避免在控制台登录时使用
e
数字

ps.
0.0125
通常四舍五入到2位有效数字是
0.013

const输入=[0.0000007123123123,0.0000000012321,0.0125];
inputs.forEach(i=>
console.log(
编号(i.toPrecision(2))。
toLocaleString(未定义,{maximumFractionDigits:20})
)
);

您可以使用
Number.toPrecision

我在这里还使用了
toLocaleString
,以避免在控制台登录时使用
e
数字

ps.
0.0125
通常四舍五入到2位有效数字是
0.013

const输入=[0.0000007123123123,0.0000000012321,0.0125];
inputs.forEach(i=>
console.log(
编号(i.toPrecision(2))。
toLocaleString(未定义,{maximumFractionDigits:20})
)
);

谢谢,这是我一直在寻找的答案。谢谢,这是我一直在寻找的答案。我想不太重复,但相关:我想不太重复,但相关: