gpt4 book ai didi

javascript - 使用正则表达式从 float 中过滤掉小数

转载 作者:行者123 更新时间:2023-11-30 08:26:19 25 4
gpt4 key购买 nike

我有一些带有大量小数的 float 数字。我一直试图通过设置最多两位小数来保持整洁。

到目前为止,我使用的是 toFixed(2)。只是为了简单起见。

223.3284293.toFixed(2);

"223.33"

我现在需要一个更复杂的解决方案。我希望所有尾随零后面的最后两位数字。

例如 1030.0002500082 会给我1030.00025

此外,我想排除两位数字的任何尾随零。

例如 400.002010082 会给我 400.002

这里还有一些例子:

380.12939499380.12

0.000039092000490.000039

0.00000040000040.0000004

39094.0302990000439094.03

75.0000003000000175.0000003

5.0000000000000000000005

我想使用 将是实现这一目标的最佳方式。

我如何指定包含尾随零的 两位数字,同时仍然排除这两位数字中的任何零?

最佳答案

您可以使用此正则表达式替换:

str = str.replace(/^(\d*)(?:\.0*|(\.0*[1-9]{1,2}).*)$/, '$1');

RegEx Demo

正则表达式分解:

  • ^ - 开始
  • (\d*) 匹配并捕获捕获组 #1 中点之前的数字
  • (?: 开始非捕获组
    • \.0* 匹配点后跟零个或多个 0
    • | 或者
    • (\.0*[1-9]{1,2}).* 匹配点后跟 0 个或多个 0 后跟 1 或 2 个非零并在第 2 组捕获它
  • )结束非捕获组
  • $结束

代码演示:

var arr = [
'23.3284293',
'1030.0002500082',
'400.002010082',
'380.12939499',
'0.00003909200049',
'0.0000004000004',
'39094.03029900004',
'75.00000030000001',
'5.0000000'
];

arr = arr.map(str => str.replace(/^(\d*)(?:\.0*|(\.0*[1-9]{1,2}).*)$/, "$1$2"));

console.log(arr);

关于javascript - 使用正则表达式从 float 中过滤掉小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45131187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com