为了账号安全,请及时绑定邮箱和手机立即绑定

找出一串数字中的最大小数位数

找出一串数字中的最大小数位数

PIPIONE 2022-12-09 19:09:42
字符串看起来像3*2.2or6+3.1*3.21或(1+2)*3,1+(1.22+3)or 之类的东西0.1+1+2.2423+2.1,它可能会有所不同。我必须在小数位数string最多的数字中找到小数位数。我完全不知道该怎么做
查看完整描述

3 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

您可以使用正则表达式查找所有具有小数位的数字,然后用于Array.prototype.reduce查找小数位数最多的数字。

const input = '0.1+1+2.2423+2.1';


const maxNumberOfDecimalPlaces = input

  .match(/((?<=\.)\d+)/g)

  ?.reduce((acc, el) =>

    acc >= el.length ?

    acc :

    el.length, 0) ?? 0;


console.log(maxNumberOfDecimalPlaces);


0请注意,当在字符串中找不到带小数位的数字时,这将返回。



查看完整回答
反对 回复 2022-12-09
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

您可以执行以下操作:

上面的方法似乎更健壮,因为它不涉及某些不受支持的特性:

const src = ['3*2.2', '6+3.1*3.21', '(1+2)*3' , '1+(1.22+3)', '0.1+1+2.2423+2.1'],


      maxDecimals = s => 

       Math.max(

        ...s

          .split(/[^\d.]+/)

          .map(n => {

            const [whole, fract] = n.split('.')

            return fract ? fract.length : 0

          })

       )

      

        

src.forEach(s => console.log(`Input: ${s}, result: ${maxDecimals(s)}`))

.as-console-wrapper{min-height:100%;}


查看完整回答
反对 回复 2022-12-09
?
偶然的你

TA贡献1841条经验 获得超3个赞

您可以使用正则表达式模式


var str="6+3.1*3.21"

d=str.match(/(?<=\d)[.]\d{1,}/g)

d!=null ? res=d.map((n,i) => ({["number" + (i+1) ] : n.length - 1}))

: res = 0

console.log(res)


查看完整回答
反对 回复 2022-12-09
  • 3 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信