当前位置: 首页 > 知识库问答 >
问题:

javascript - 请问能用deciaml js替换原来js的+-*/符号功能?

章博耘
2023-11-03

因为要使用高精度计算,目前使用decimal js都要创建物件+呼叫方法,变得繁琐
希望将以下方式

new Decimal(1).sub(new Decimal(2)).add(new Decimal(3)).mul(new Decimal(4.3)).div(new Decimal(4.1)) 

能改成符号又能兼顾精度

1-2+3*4.3/4.1 = 2.1463

共有2个答案

慕容铭
2023-11-03

可以试下a-calc
https://github.com/Autumn-one/a-calc-old/blob/main/README_ZH.md
image.png

梁骞仕
2023-11-03

这个问题可以通过使用一个自定义的函数来解决,这个函数可以接受一个字符串作为参数,然后在里面解析和执行这些操作。

这里有一个可能的解决方案:

function calculateExpression(expr) {    return new Decimal(eval(expr));}var result = calculateExpression("1-2+3*4.3/4.1");console.log(result.toString());  // 输出 2.146309735483871

这个 calculateExpression 函数接受一个字符串表达式作为参数,然后使用 eval 函数来计算这个表达式。eval 函数会返回一个结果,我们把这个结果转换成 Decimal 对象。

但是需要注意,eval 函数在处理字符串时有一定的安全风险。它会执行任何传递给它的 JavaScript 代码,所以如果你在处理来自不可信的源的字符串时使用 eval,那么你的代码可能会被注入恶意代码。因此,尽管这个解决方案可能对你目前的问题有帮助,但在实际的生产环境中,我强烈建议你避免使用 eval

对于高精度的加减乘除运算,我建议你使用专门的库来进行处理,比如你提到的 decimal.js。虽然使用这个库需要更多的代码,但是它可以提供更好的精度和控制,同时也能更好地处理一些边缘情况。

 类似资料:
  • 怎么替换成红色的值 对象可能有多个

  • 本文向大家介绍js使用Replace结合正则替换重复出现的字符串功能示例,包括了js使用Replace结合正则替换重复出现的字符串功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js使用Replace结合正则替换重复出现的字符串功能。分享给大家供大家参考,具体如下: 今天想把网站上关于用户搜索资料后的结果列表进行处理,如同百度搜索一样,加入我搜索框中输入“我要日日发网络”,点击搜索

  • 问题内容: 我的桌子上有一个方程式。我一次要提取一个方程式,并希望将所有运算符替换为其他任何字符。 输入字符串: 运算符或模式: 替换字符: 输出字符串: 我曾尝试使用 嵌套的REPLACE 函数在下面的查询中得到所需的输出: 输出: 如何在不使用嵌套替换功能的情况下替换所有运算符? 问题答案: 我创建了一个函数来实现此目的,因为我需要多次执行此操作 分割功能 过程中使用的代码: 输出

  • 我正在用不同的值替换字符串中的问号。 例子: 我的Preudo代码: 通常这工作得很好。但有时我在值中有一个问号,例如:Value:。然后我的结果是:。这是因为该函数替换了之前一次迭代替换的文本的问号。 如何告诉函数只替换没有引号包围的问号?正确的正则表达式是什么?

  • v-if和v-for 由于使用原生的 JavaScript 来实现某些东西很简单,Vue 的 render 函数没有提供专用的 API。比如,template 中的v-if和v-for: <ul v-if="items.length"> <li v-for="item in items">{{ item.name }}</li> </ul> <p v-else>No items found.

  • 字符串的运算符号怎么转换成js的表达式