html浮点计算器,javascript公式计算引擎-解决浮点数计算误差-网页计算器
我们大家都知道,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公式计算引擎-解决浮点数计算误差-网页计算器相关推荐
- 递归实现类似计算器的公式计算处理工资,公积金,社保计算
前言 公司一个业务需求需要计算员工的工资,社保.考虑到公司业务有很多需要用到公式计算,决定封装一个类可以实现类似于计算器输入公式计算出结果的效果. 思路 社保,公积金计算的公式中有判断的逻辑,如果工资 ...
- android代码计算器三角函数公式大全,三角函数换算(新版中文三角函数计算器)
三角函数转换公式1.诱导公式:sin(-α)= -sinα:cos(-α) = cosα:sin(π/2-α)= cosα:cos(π/2-α) = sinα: sin(π/2+α) = cosα:c ...
- 建工计算机在线使用,建工计算器创建公式的相关操作教程
很多新手小伙伴还不了解建工计算器创建公式的具体操作,所以下面小编就带来了建工计算器创建公式的详细教程哦. 建工计算器创建公式的相关操作教程 1. 以"2点之间的距离"为例,首先点击 ...
- 网页计算器功能【案例】【两种实现】
网页计算器 我们学完了函数,做一个网页计算器的小案例-巩固一下- 共两个案例: 案例一图: 相加: 相减 相乘 相除 代码如下: 结构: <p>整数1: <input type=&q ...
- 叉乘点乘混合运算公式_学生计算器——高中公式轻松计算
学生计算器是一款对于中学生是非常实用的计算器工具.软件界面简洁.无广告.内存小.永久免费,是一个专门为中学生设计的多功能计算器软件,无论是初中的公式还是高中的运算,都可以用它来解决.计算器功能强大,蕴 ...
- 自定义计算器 android,自定义公式计算app下载
自定义公式计算器是非常强大的一款计算器软件,可以帮助大家计算各种函数,还能够自定义公式进行保存,便于以后的计算:软件包含了科学计算器的所有功能,而且没有广告,非常的方便和强大,喜欢的朋友可以到当易网下 ...
- 0.1+0.2不等于0.3,微信小程序云开发如何解决JavaScript小数计算精度失准的问题
先看图,0.1+0.2不等于0.3 这个是JavaScript语言自身存在的一个问题.说到这里不得不提一下网上流传的JavaScript搞笑图 我们在使用云开发来开发微信小程序的时候,会经常遇到Jav ...
- 【java表达式引擎】一、汇总目前开源的公式计算开源库
java表达式引擎 前言 一.Fin-Expr 二.Expr4J 三.exp4j 四.Aviator VIATOR--轻量级JAVA表达式求值引擎 五. BeanShell 六.脚本语言 Ognl.M ...
- phpspreadsheet 中文文档(三) 计算引擎
2019年10月11日13:59:52 使用PhpSpreadsheet计算引擎 执行公式计算 由于PhpSpreadsheet表示内存中的电子表格,因此它还提供公式计算功能.单元格可以是值类型(包含 ...
最新文章
- YOLOP ONNXRuntime C++工程化记录
- keras构建前馈神经网络(feedforward neural network)进行分类模型构建基于早停法(Early stopping)
- matlab里1stopt,请帮忙运行下1stopt 程序?(MATLAB没有解出结果)
- 麻省理工牛人解说数学体系
- 王者荣耀活动精选 Blink 第二弹来袭!
- mysql和oracle表的互导_oracle到mysql的导数据方式(适用于任意数据源之间的互导)...
- u盘可以安装java吗_java下载安装 (三)Java 开发环境配置
- java opencv 平移_如何使用opencv pnpRansac()函数中的平移矩阵和旋转矩阵设置Rajawali相机的旋转?...
- map和struct的多重嵌套
- selenium自动化之鼠标操作
- Leetcode5635. 构建字典序最大的可行序列[C++题解]:dfs暴搜
- lvs和HA的高可用性
- ZT:公司绝对不会告诉你的潜规则(何杨)
- 中国军事可穿戴传感器行业市场供需与战略研究报告
- python股票量化交易(10)---使用机器学习算法预测股票涨跌
- js Tree(梅花雪)最简单的例子(来字MEIZZ)
- 惠普服务器bios修改ilo,HPE Gen10 Plus iLO5 BIOS设置固定IP地址
- 百度二年级手工机器人_小学二年级手工科技制作方案
- UART、RS232、RS485和RS422
- 淘宝/天猫邻家好货 API 返回值说明