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)
如何修剪尾随零但同时保持良好的输出?
仅限全零小数
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)