替换为正则表达式表示最小/最大十进制长度

Replace with regex for min/max decimal length

本文关键字:十进制 正则表达式 表示 替换      更新时间:2023-09-26

>我在这个论坛上发现了以下正则表达式,可以将任何数字替换为尽可能小的十进制长度:

number.toFixed(maxDecimal).replace(/'.?0+$/, '');

它的效果非常好,除了一种情况:当数字等于 49.99999999 时,当我将 maxDecimal 设置为 0 时,它返回 5 而不是 50。我对正则表达式有点迷茫,如果您提出建议,将不胜感激。

只需删除问号?,因为这会使50减少到5,因为正则表达式说小数点出现 0 或 1 次,后跟 1 个或多个0。您不希望这样,因为 0/50 将与 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"