js中浮点型运算 加减乘除
<script>
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
function
accAdd(arg1,arg2){
var
r1,r2,m;
try
{r1=arg1.toString().split(
"."
)[1].length}
catch
(e){r1=0}
try
{r2=arg2.toString().split(
"."
)[1].length}
catch
(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return
(arg1*m+arg2*m)/m
}
//给Number类型增加一个add方法,调用起来更加方便。
Number.prototype.add =
function
(arg){
return
accAdd(arg,
this
);
}
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
function
accSub(arg1,arg2){
var
r1,r2,m,n;
try
{r1=arg1.toString().split(
"."
)[1].length}
catch
(e){r1=0}
try
{r2=arg2.toString().split(
"."
)[1].length}
catch
(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
//last modify by deeka
//动态控制精度长度
n=(r1>=r2)?r1:r2;
return
((arg1*m-arg2*m)/m).toFixed(n);
}
//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
function
accDiv(arg1,arg2){
var
t1=0,t2=0,r1,r2;
try
{t1=arg1.toString().split(
"."
)[1].length}
catch
(e){}
try
{t2=arg2.toString().split(
"."
)[1].length}
catch
(e){}
with
(Math){
r1=Number(arg1.toString().replace(
"."
,
""
))
r2=Number(arg2.toString().replace(
"."
,
""
))
return
(r1/r2)*pow(10,t2-t1);
}
}
//给Number类型增加一个div方法,调用起来更加方便。
Number.prototype.div =
function
(arg){
return
accDiv(
this
, arg);
}
//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
function
accMul(arg1,arg2)
{
var
m=0,s1=arg1.toString(),s2=arg2.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)
}
//给Number类型增加一个mul方法,调用起来更加方便。
Number.prototype.mul =
function
(arg){
return
accMul(arg,
this
);
}
var
a=0.69;
var
b=10;
alert(a*b);
//6.8999999999999995
alert((a*100)/10);
</script>
转载于:https://www.cnblogs.com/lcyhappy/p/10138961.html
js中浮点型运算 加减乘除相关推荐
- js中浮点数运算精度问题
在js中,我们有时会遇到计算,通过加减乘除处理某些业务.那么这时候如果不做任何处理,就会出现如下典型的精度丢失问题. console.log(0.1 + 0.2) ; // 0.30000000000 ...
- JS中浮点数运算误差处理
先来个简单的代码片段: > console.log(0.1 + 0.2) > 0.30000000000000004 好奇怪的结果,怎么会是0.30000000000000004呢?难道是 ...
- JS中的运算符号(加号)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- js中float运算
/浮点数加法运算 function FloatAdd(arg1,arg2){ var r1,r2,m; try{r1=arg1.toString().split(".")[1].l ...
- 为什么JS中0.1+0.2 != 0.3
为什么JS中0.1+0.2 != 0.3 在我曾经的一篇< javascript入门教程 (2) >中,讲到JS中数字运算时,我们提到过一个叫做 数字运算中的精度缺失的问题,当时我们只是简 ...
- JS中关于0.1+0.2 !==0.3 和0.1+0.7!==0.8的问题
** JS中关于0.1+0.2 !==0.3 和0.1+0.7!==0.8的问题 ** 在js中,0.1+0.2不会等于0.3,而是等于: 在js中,0.1+0.7不会等于0.8,而是等于: JS中数 ...
- JS中bignumber处理高精度小数运算的使用
JS中bignumber处理高精度小数运算的使用 安装或引用 bignumber.js的API地址: 静态方法 实例方法 项目开发中发现精度丢失的问题,如0.1+0.2 = 0.30000000000 ...
- 关于JS中的浮点数运算
文章目录 浮点数的存储 浮点数的运算 如何解决 参考 更新:2020/08/21--如何避开JavaScript浮点数计算精度问题(如0.1+0.2!==0.3)讲的很全面 这篇文章起于「查缺补漏」送 ...
- 取余运算应用(1)-在js中
取余运算应用(1)-在js中 1.应用1, 让一个数在一个范围内内循环 // 参考: https://zhuanlan.zhihu.com/p/55210125 // eg.让temp在0~5循环 l ...
最新文章
- sqlyog.err文件可以删掉吗_苹果备忘录删掉的东西可以找回来吗?可以恢复被删内容的便签备忘录软件...
- Hadoop文件系统元数据fsimage和编辑日志edits
- ubuntu/mint 恢复模式 报read-only file system 的解决方法
- 5.3 使用tensorflow搭建GoogLeNet网络 笔记
- SkyWalking8.1.0 部署和使用
- Free tour II SPOJ - FTOUR2 点分治 + 树状数组
- 提升应用程序弹性:保障工作负载正常运行
- AOP——基于AspectJ的注解来实现AOP操作
- 多系统并行服务器,具有分布式并行I/O接口的分布式并行服务器系统的性能研究...
- Xlib: connection to :0.0 refused by server解决方法
- android 代码混淆 反编译,Android的反编译和代码混淆
- 建立城市安防系统 打造更安全智慧城市
- 什么是ICMP协议,它的作用是什么?
- 基于 Sentinel-2 卫星数据的像元三分法模型
- epub格式电子书剖析之一:文档构成
- 高博视觉SLAM十四讲--罗德里格斯公式推导
- 十家高质量学习网站推荐给所有人
- moto Z2 Force ATT 版手机刷安卓8.0系统教程
- Jupyter Notebook(Anaconda)【快捷键】
- 数云荣登乌镇互联网大会2016中国大数据创新企业50强