我们大家都知道,javascript在计算公式的时候,会出现误差,导致我们本来就应该正确的代码,出现了我们意想不到的结果。

例如:45.6*13=592.8000000000001(结果应该是592.8);

0.7+0.1=0.7999999999999999(应该是0.8);

//还有N多,在此不一一列举。

网上有一个比较认可的解决方法,就是自己去写加法,减法,乘法,除法。

例如:// 两个浮点数求和

function accAdd(num1,num2){

var r1,r2,m;

try{

r1 = num1.toString().split('.')[1].length;

}catch(e){

r1 = 0;

}

try{

r2=num2.toString().split(".")[1].length;

}catch(e){

r2=0;

}

m=Math.pow(10,Math.max(r1,r2));

// return (num1*m+num2*m)/m;

return Math.round(num1*m+num2*m)/m;

}

// 两个浮点数相减

function accSub(num1,num2){

var r1,r2,m;

try{

r1 = num1.toString().split('.')[1].length;

}catch(e){

r1 = 0;

}

try{

r2=num2.toString().split(".")[1].length;

}catch(e){

r2=0;

}

m=Math.pow(10,Math.max(r1,r2));

n=(r1>=r2)?r1:r2;

return (Math.round(num1*m-num2*m)/m).toFixed(n);

}

// 两数相除

function accDiv(num1,num2){

var t1,t2,r1,r2;

try{

t1 = num1.toString().split('.')[1].length;

}catch(e){

t1 = 0;

}

try{

t2=num2.toString().split(".")[1].length;

}catch(e){

t2=0;

}

r1=Number(num1.toString().replace(".",""));

r2=Number(num2.toString().replace(".",""));

return (r1/r2)*Math.pow(10,t2-t1);

}

function accMul(num1,num2){

var m=0,s1=num1.toString(),s2=num2.toString();

try{m+=s1.split(".")[1].length}catch(e){};

try{m+=s2.split(".")[1].length}catch(e){};

return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);

}

但是有的时候,我们需要计算一连串的公式,并且里面包含了括号等等的复杂的符合运算,这个时候咱们应该怎么办呢?

例如:计算(0.7+0.1)÷(45.6*13)

这样的公式,我们是无法通过上面的自定义函数来解决的。因此今天给大家介绍一个比较好的计算引擎。

CalcEval.js

CalcEval引擎是一个专门解决javascript浮点数误差的的引擎,能够完美的解决各种复合的运算,最终输出正确的结果。

使用方法:

第一步:引入CalcEval.js

第二部:在页面上调用CalcEval的解析引擎入口var ce = new CalcEval();//创建引擎对象

var result = ce.eval("(0.7+0.1)/(45.6*13)");//调用引擎接口来解析公式的字符串,这个地方,必须要将公式以字符串的形式传入。

alert(result);//查看返回结果。

就这么简单的过程,就可以解决了每个浏览器中的浮点数计算bug。同时也可以制作自己的网页计算器了。

CalcEval.js下载地址:

-----------------------------------------------------

转载请注明来源此处

原地址:#

html浮点计算器,javascript公式计算引擎-解决浮点数计算误差-网页计算器相关推荐

  1. 递归实现类似计算器的公式计算处理工资,公积金,社保计算

    前言 公司一个业务需求需要计算员工的工资,社保.考虑到公司业务有很多需要用到公式计算,决定封装一个类可以实现类似于计算器输入公式计算出结果的效果. 思路 社保,公积金计算的公式中有判断的逻辑,如果工资 ...

  2. android代码计算器三角函数公式大全,三角函数换算(新版中文三角函数计算器)

    三角函数转换公式1.诱导公式:sin(-α)= -sinα:cos(-α) = cosα:sin(π/2-α)= cosα:cos(π/2-α) = sinα: sin(π/2+α) = cosα:c ...

  3. 建工计算机在线使用,建工计算器创建公式的相关操作教程

    很多新手小伙伴还不了解建工计算器创建公式的具体操作,所以下面小编就带来了建工计算器创建公式的详细教程哦. 建工计算器创建公式的相关操作教程 1. 以"2点之间的距离"为例,首先点击 ...

  4. 网页计算器功能【案例】【两种实现】

    网页计算器 我们学完了函数,做一个网页计算器的小案例-巩固一下- 共两个案例: 案例一图: 相加: 相减 相乘 相除 代码如下: 结构: <p>整数1: <input type=&q ...

  5. 叉乘点乘混合运算公式_学生计算器——高中公式轻松计算

    学生计算器是一款对于中学生是非常实用的计算器工具.软件界面简洁.无广告.内存小.永久免费,是一个专门为中学生设计的多功能计算器软件,无论是初中的公式还是高中的运算,都可以用它来解决.计算器功能强大,蕴 ...

  6. 自定义计算器 android,自定义公式计算app下载

    自定义公式计算器是非常强大的一款计算器软件,可以帮助大家计算各种函数,还能够自定义公式进行保存,便于以后的计算:软件包含了科学计算器的所有功能,而且没有广告,非常的方便和强大,喜欢的朋友可以到当易网下 ...

  7. 0.1+0.2不等于0.3,微信小程序云开发如何解决JavaScript小数计算精度失准的问题

    先看图,0.1+0.2不等于0.3 这个是JavaScript语言自身存在的一个问题.说到这里不得不提一下网上流传的JavaScript搞笑图 我们在使用云开发来开发微信小程序的时候,会经常遇到Jav ...

  8. 【java表达式引擎】一、汇总目前开源的公式计算开源库

    java表达式引擎 前言 一.Fin-Expr 二.Expr4J 三.exp4j 四.Aviator VIATOR--轻量级JAVA表达式求值引擎 五. BeanShell 六.脚本语言 Ognl.M ...

  9. phpspreadsheet 中文文档(三) 计算引擎

    2019年10月11日13:59:52 使用PhpSpreadsheet计算引擎 执行公式计算 由于PhpSpreadsheet表示内存中的电子表格,因此它还提供公式计算功能.单元格可以是值类型(包含 ...

最新文章

  1. YOLOP ONNXRuntime C++工程化记录
  2. keras构建前馈神经网络(feedforward neural network)进行分类模型构建基于早停法(Early stopping)
  3. matlab里1stopt,请帮忙运行下1stopt 程序?(MATLAB没有解出结果)
  4. 麻省理工牛人解说数学体系
  5. 王者荣耀活动精选 Blink 第二弹来袭!
  6. mysql和oracle表的互导_oracle到mysql的导数据方式(适用于任意数据源之间的互导)...
  7. u盘可以安装java吗_java下载安装 (三)Java 开发环境配置
  8. java opencv 平移_如何使用opencv pnpRansac()函数中的平移矩阵和旋转矩阵设置Rajawali相机的旋转?...
  9. map和struct的多重嵌套
  10. selenium自动化之鼠标操作
  11. Leetcode5635. 构建字典序最大的可行序列[C++题解]:dfs暴搜
  12. lvs和HA的高可用性
  13. ZT:公司绝对不会告诉你的潜规则(何杨)
  14. 中国军事可穿戴传感器行业市场供需与战略研究报告
  15. python股票量化交易(10)---使用机器学习算法预测股票涨跌
  16. js Tree(梅花雪)最简单的例子(来字MEIZZ)
  17. 惠普服务器bios修改ilo,HPE Gen10 Plus iLO5 BIOS设置固定IP地址
  18. 百度二年级手工机器人_小学二年级手工科技制作方案
  19. UART、RS232、RS485和RS422
  20. 淘宝/天猫邻家好货 API 返回值说明

热门文章

  1. CentOS7 设置防火墙、开放指定端口操作
  2. 花小几千买了PMP培训课程后,你将得到什么?
  3. WORD调用Excel的 文本到语音 功能 让WORD有声朗诵
  4. win10系统+3060显卡驱动+cuda11.5+cudnn8.3安装
  5. JavaScript元素定位
  6. 我们都是大小孩,六一快乐
  7. 【笔记】电商订单数据分析实战
  8. Kali系统MSF模块暴力破解MySQL弱口令漏洞
  9. php redis 排行榜
  10. Mathematics:Prime Path(POJ 3126)