重写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 怎么会 ...
随机推荐
- 从头开始-06.C语言中预处理指令
预处理指令 不带参数的宏定义: 格式: #define 宏名 值 作用:提高代码的可读性 在程序编译前把所有出现宏名标示的位置都替换为定义宏的时候,宏名后面的值 带参数的宏定义 格式 #define ...
- class如何命名更规范
相信写css的人都会遇到下面的问题: 糟糕,怎么命名这个class,好像不太贴切,要是冲突了怎么办,要不要设计成通用一点... 而改别人css代码的时候则会一直有个疑问:这个class到底是只在这个地 ...
- hibernate初体验
简介: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使 ...
- <转>泛型的内部原理:类型擦除以及类型擦除带来的问题
参考:java核心技术 一.Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首 ...
- 面向对象S.O.L.I.D原则
面向对象的五大原则,又称S.O.L.I.D原则: S(SRP, Single Reponsibility Principle): 单一职责原则,一个类应有且只有一个职责(或只有一个引起其变化的原因) ...
- linux判断日期是否合法
#include <time.h> #include <stdio.h> typedef enum { , } bool; bool check_date(int year, ...
- 各种非标232,485协议,自定义协议转modbus协议模块定制开发,各种流量计协议转modbus,
工业现场经常会碰到通过485或者232采集各类仪表数据,但是很多早期的仪表和设备不支持标准modbus协议,而是采用自定义的协议,这些协议数据由plc或者dcs系统来实现采集,不仅费时麻烦,而且不方便 ...
- php 验证身份证有效性,根据国家标准GB 11643-1999 15位和18位通用
//验证身份证是否有效 function validateIDCard($IDCard) { if (strlen($IDCard) == 18) { return check18IDCard($ID ...
- ArcGIS学习推荐基础教程摘录
###########-------------------摘录一--------------------------########### ***************************** ...
- JScript中的prototype(原型)属性研究
今天看到同事使用js中的Prototype,感觉很是新鲜.由此想深入学习一下prototype(英['prəʊtətaɪp] 美['protə'taɪp]n. 原型:标准,模范),在学习prototy ...