JavaScript:修剪.toPrecision()尾随零

Gre*_*reg 4 javascript math precision

我正在使用JavaScript创建在线计算器.

我有这个来计算:

eval(expression).toPrecision(10);
Run Code Online (Sandbox Code Playgroud)

这几乎在所有情况下都能产生正确的输出.例如

eval('456456+45646486*45646884').toPrecision(10)
// Output: "2.083619852e+15"

eval('1/0').toPrecision(10)
// Output: "Infinity"
Run Code Online (Sandbox Code Playgroud)

然而

eval('4*1').toPrecision(10)
// Output: "4.000000000"
Run Code Online (Sandbox Code Playgroud)

如何修剪尾随零同时保持良好的输出?

小智 9

使用toPrecision后除以1.Javascript将跟踪零,并且不需要正则表达式.

  • 我使用了这样的解决方案:`val.toFixed(2) / 1` (3认同)

dan*_*vis 4

仅限全零小数

  eval('4*1').toPrecision(10).replace(/\.0+$/,"")
Run Code Online (Sandbox Code Playgroud)

零结尾的小数:

  eval('4.5*1').toPrecision(10).replace(/\.([^0]+)0+$/,".$1")
Run Code Online (Sandbox Code Playgroud)

编辑:处理所有零和结束零的情况

编辑:如果您始终首先使用 .toPrecision() ,因此始终有一个“.”,您可以修剪掉任何尾随零:

  eval('4.5*1').toPrecision(10).replace(/0+$/,"")
Run Code Online (Sandbox Code Playgroud)

编辑:处理尾随小数:

eval('4.5*0').toPrecision(10).replace(/\.?0+$/,"")
Run Code Online (Sandbox Code Playgroud)