我在这个论坛上找到了以下正则表达式,可以将任何数字替换为尽可能小的十进制长度:
number.toFixed(maxDecimal).replace(/\.?0+$/, '');
它工作得很好,除了一种情况:当 number 等于 49.9999999 时,当我将 maxDecimal 设置为 0 时,它返回 5 而不是 50。我对正则表达式有点迷失,如果你想出一个建议。
最佳答案
只需删除问号?
,因为这会使50
减少为5
,因为正则表达式表示出现0或1次小数点,后跟1 个或多个 0
。您不希望这样,因为 50 中的 0 会匹配 0+ 部分,因为小数点是可选的。使用此正则表达式可确保仅适当替换小数部分。
>47.79955965.toFixed(5).replace(/(\.0+){0,1}$/, '');
"47.79956"
>number=49.9999999
49.9999999
> number.toFixed(5).replace(/(\.0+){0,1}$/, '');
"50"
> number.toFixed(0).replace(/(\.0+)?$/, '');
"50"
关于javascript - 替换为最小/最大十进制长度的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35834163/