重写javascript浮点运算
javascript中变量存储时不区分number和float类型,同一按照float存储;
javascript使用IEEE 754-2008标准定义的64bit浮点格式存储number,decimal64对应的整形部分长度为10,小树部分长度为16;
javascript做小数点运算会出现不精准.
//加法运算
var accAdd = function(num1,num2){
var n1,n2,m;
try{
n1 = num1.toString().split(".")[1].length;
}catch(e){
n1 = 0;
}
try{
n2 = num2.toString().split(".")[1].length;
}catch(e){
n2 = 0;
}
m = Math.pow(10,Math.max(n1,n2));
return (num1*m + num2*m)/m;
} //减法运算
var suntr = function(num1,num2){
var n1,n2,m,n;
try{
n1 = num1.toString().split(".")[1].length;
}catch(e){
n1 = 0;
}
try{
n2 = num2.toString().split(".")[1].length;
}catch(e){
n2 = 0;
}
m = Math.pow(10,Math.max(n1,n2));
n = (n1 > n2) ? n1 : n2;
return ((num1*m - num2*m)/m).toFixed(n);
} //乘法运算
var accMul = function(num1,num2){
var m = 0,n1,n2,
s1 = num1.toString(),
s2 = num2.toString();
try{
m += s1.split(".")[1].length;
}catch(e){ }
try{
m += s2.split(".")[1].length;
}catch(e){ }
n1 = Number(s1.replace(".",""));
n2 = Number(s2.replace(".",""));
return n1 * n2 / Math.pow(10,m);
} //除法运算
var accDivi = function(num1,num2){
var s1 = 0,s2 = 0,n1,n2;
try{
s1 = num1.toString().split(".")[1].length;
}catch(e){ }
try{
s2 = num2.toString().split(".")[1].length;
}catch(e){ }
with(Math){
n1 = Number(num1.toString().replace(".",""));
n2 = Number(num2.toString().replace(".",""));
return (n1/n2)*Math.pow(10,s2-s1);
}
}
重写javascript浮点运算的更多相关文章
- JavaScript浮点运算,小数点精度
math.js JavaScript浮点运算,小数点精度 // JavaScript Document //数学函数 // 浮点数加法运算 function floatAdd(arg1, arg2) ...
- Javascript 浮点运算问题分析与解决
分析 JavaScript 只有一种数字类型 Number ,而且在Javascript中所有的数字都是以IEEE-754标准格式表示的. 浮点数的精度问题不是JavaScript特有的,因为有些小数 ...
- javascript 浮点运算
<script type="text/javascript"> // 两个浮点数求和 function accAdd(num1,num2){ var r1,r2,m; ...
- WebView 中重写javascript 常用函数
常规函数 javascript 常规函数包括以下3个函数: (1)alert函数:显示一个警告对话框,包括一个OK按钮. 对应:http://www.dreamdu.com/javascript ...
- JavaScript浮点运算的问题 (乘法)
<script type="text/javascript"> var get_b_val_final=accMul(get_b_val,100)+"%&qu ...
- javascript函数值的重写
原文:javascript函数值的重写 javascript函数值的重写 定义了一个函数,需要重写这个函数并使用原先的函数值.做法是: 1.定义一个变量让原先函数的值指向它,把原先函数的指向一个新的函 ...
- 在JavaScript中重写jQuery对象的方法
jQuery是一个很好的类库,它给我们解决了很多的客户端编程,任何东西都不是万能的,当它不能满足我们的需求时我们需要对它进行重写,同时也不要影响其原有的功能或者修改其原有的功能:我现在的web应用程序 ...
- JavaScript中Number数字数值浮点运算有误差
JavaScript浮点运算的一个bug. 比如:7*0.8 JavaScript算出来就是:5.6000000000000005 //调用:numberExcept(arg1,arg2) //返回值 ...
- JavaScript中有关数字的精确计算
问题这样的: 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) ,我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会 ...
随机推荐
- Mschart应用之曲线图表spline
本文主要是Mschart应用之曲线图表spline,实现6个模拟数据的图表,其中数据源X轴为当前系统时间,Y轴是由随机函数产生的不同范围的随机数. 首先是自定义一个数据表,然后产生的数据添加到该数据表 ...
- uinavagation 透明代码
NSShadow *shadow = [[NSShadow alloc] init]; [shadow setShadowOffset:CGSizeMake(1, 1)]; [shadow setSh ...
- 【IOS学习基础】NSObject.h学习
一.<NSObject>协议和代理模式 1.在NSObject.h头文件中,我们可以看到 // NSObject类是默认遵守<NSObject>协议的 @interface N ...
- ARP网关占用
30网段已经发生了2次ARP了 排查方法:我直去核心交换机直连镜像口,用wireshark抓包,过滤出ARP的包 发现的确有ARP的攻击,因为没有统计公司电脑和无线路由的MAC地址,所以只能一个个把无 ...
- zoj 1078
非常简单的题,没什么好说的.唯一值得一提的就是在判断是否是回文的时候只需遍历一半的元素即可,稍微提高一点性能. #include<iostream> using namespace std ...
- 井字棋(Tic-Tac-Toe)
井字棋介绍:https://en.wikipedia.org/wiki/Tic-tac-toe 井字棋简单,但是获胜策略却和直觉不同,四角比中间重要性要高,而且先手有很大的获胜概率获胜(先手胜:91, ...
- Servlet 浅谈(二)
如何获取初始化参数 容器在初始化的时候,会为了这个Servlet创建一个唯一的ServletConfig,容器会从DD读出Servlet的初始化参数,并把这个参数交给ServletConfig,然后S ...
- php中json_encode中文编码问题
1 <?php 2 class myClass { 3 public$item1=1; 4 public$item2='中文'; 5 6 function to_json() { 7 //url ...
- VitualBox中linux系统ping ip能通域名不通的解决办法
linux本机的DNS配置信息是在:/etc/resolv.conf vi打开,修改为本机的dns服务器地址
- 推荐大家使用的CSS书写规范、顺序(转载)
转自:http://www.admin10000.com/document/2979.html 写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体 ...