首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取乘积和表达式mathjs/js的不同乘积

获取乘积和表达式mathjs/js的不同乘积
EN

Stack Overflow用户
提问于 2020-07-08 13:58:47
回答 1查看 49关注 0票数 0

有没有一种方法可以使用Mathjs或其他js甚至平原js来获得一个乘积表达式的不同乘积?将这个表达式设为字符串:

7.30*7.40-2.10*1.30+8.10*(2.70+0.60+4.70)+0.30*0.60+ 1.60*0.70+2.95*2.65+6.00*5.80

函数应该只执行乘法,并返回不同乘积的不同和。

结果应该是:54.02 - 2.73 + 64.8 + 0.18...

它应该尊重父母。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-08 16:32:03

代码语言:javascript
运行
复制
let str = "7.30*7.40-2.10*1.30+8.10*(2.70+0.60+4.70)+0.30*0.60+ 1.60*0.70+2.95*2.65+6.00*5.80"

let strArr = str.split("*")

let parsedParenthesis = strArr.map(expression => {
  if (!isNaN(expression))
    return expression
  let regex = /\(([^()]+)\)/g
  if (regex.test(expression)) {
    let matched = (expression.match(regex))[0]
    let exp = matched.split(/[\(\)]/)[1]
    let evaluatedExp = math.evaluate(exp) //if using mathjs
    expression = expression.replace(matched, evaluatedExp)
  }
  return expression
})
let finalString = parsedParenthesis.join("*")
let multiplyArr = finalString.match(/(\d+\.?\d*\*\d+\.?\d*)/g)
multiplyArr.map(exp => {
  let evaluatedExp = Math.round((math.evaluate(exp) + Number.EPSILON) * 100) / 100 //if using mathjs
  finalString = finalString.replace(exp, evaluatedExp)
})
console.log(finalString)
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/7.0.2/math.js"></script>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62796524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档