<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
//给Number类型增加 加法函数
Number.prototype.add = function (arg) {
var l1 = this.toString().indexOf('.') > 0 ? this.toString().split(".")[1].length : 0,
l2 = arg.toString().indexOf('.') > 0 ? arg.toString().split(".")[1].length : 0,
pw = Math.pow(10, Math.max(l1, l2));
return (arg * pw + pw * this) / pw;
};
//给Number类型增加 减法函数
Number.prototype.sub = function (arg) {
var l1 = this.toString().indexOf('.') > 0 ? this.toString().split(".")[1].length : 0,
l2 = arg.toString().indexOf('.') > 0 ? arg.toString().split(".")[1].length : 0,
pw = Math.pow(10, Math.max(l1, l2)),
//动态控制精度长度
l = (l1 >= l2) ? l1 : l2;
return ((this * pw - arg * pw) / pw).toFixed(l);
}
//给Number类型增加 乘法函数
Number.prototype.mul = function (arg) {
var pw = 0;
pw += this.toString().indexOf('.') > 0 ? this.toString().split(".")[1].length : 0;
pw += arg.toString().split(".")[1].length > 0 ? arg.toString().split(".")[1].length : 0;
return Number(arg.toString().replace(".", "")) * Number(this.toString().replace(".", "")) / Math.pow(10, pw);
}
//给Number类型增加 除法函数
Number.prototype.div = function (arg) {
var l1 = this.toString().indexOf('.') > 0 ? this.toString().split(".")[1].length : 0,
l2 = arg.toString().indexOf('.') > 0 ? arg.toString().split(".")[1].length : 0;
with (Math) {
r1 = Number(this.toString().replace(".", ""));
r2 = Number(arg.toString().replace(".", ""));
return (r1 / r2) * pow(10, l2 - l1);
}
}
/*加法函数 调用实例*/
var testadd = [1.123, 2.456, 3.456, 4, 5, 6, 7, 8, 9, 0];
console.log(testadd[0].add(testadd[1])); //3.579
console.log(1.123 + 2.456); //错误对比:3.5789999999999997 var count = 0;
for (i in testadd)
count = count.add(testadd[i]);
console.log(count); //46.035
console.log('加法函数 调用实例'); /*减法函数 调用实例*/
var testsub = [1.123, 2.456, 3.456, 4, 5, 6, 7, 8, 9, 0];
console.log(testsub[1].sub(testsub[0])); //1.333 console.log(testsub[1].sub(testsub[2])); //-1.000
console.log(2.456 - 3.456); //小数对比:-1
console.log('减法函数 调用实例'); /*乘法函数 调用实例*/
var testmul = [1.123, 2.456, 3.456, 4, 5, 6, 7, 8, 9, 0];
console.log(testmul[1].mul(testmul[2])); //8.487936
console.log(2.456 * 3.456); //8.487936
console.log('乘法函数 调用实例'); //乘法函数 调用实例
var testdiv = [1.123, 2.456, 3.456, 4, 5, 6, 7, 8, 9, 0];
console.log(testdiv[1].div(testdiv[2])); //0.7106481481481481
console.log(2.456 / 3.456); //0.7106481481481481
console.log('乘法函数 调用实例');
</script>
</head>
<body> </body>
</html>

  

给Number类型增加加法、减、乘、除函数,解决float相加结果精度错乱的问题的更多相关文章

  1. Oracle数据库中NARCHAR转换成NUMBER类型

    1.修改后的代码: public void addDirectorActorKeyword(long idStart, long idEnd) { SeriesMgr seriesMgr = new ...

  2. ORACLE 中NUMBER 类型 低精度转换成高精度

    例如: 表User中有一个字段 salary  Number(10,3), 如果想把字段salary的类型提高精度到salary  Number(10,6),保留六位小数, 解决办法:1,ALTER ...

  3. JS数据类型之Number类型

    Number类型的转换及方法 var num = 10; num.toString() //"10"转字符串,参数表示几进制 num.toFixed(2) //10.00 自动舍入 ...

  4. [20191003]oracle number类型存储转化脚本.txt

    [20191003]oracle number类型存储转化脚本.txt --//完善脚本,增加支持科学记数法.比如1e4之类的写法. 2.测试:$ cat test.txt012251234100-4 ...

  5. html5 input number类型使用整理

      一.  html5 input中的数字number类型, 只能输入整数,如果要输入浮点数呢,可以通过max.min和step去定义. type="number" 数字类型 mi ...

  6. ORACLE NUMBER类型Scale为0引发的问题

    今天遇到了一个很有意思的NUMBER类型Scale引发的问题,我用一个简单的测试用例来展示一下这个案例.假如有个TEST的表,有个字段类型为NUMBER,我插入下面两条数据 CREATE TABLE ...

  7. javascript学习笔记2-typeof、Number类型、Boolean()

    1.typeof操作符 对一个值使用typeof操作符可能返回下列某个字符串 "undefined"——这个值未定义 "boolean"——这个值是布尔值 &q ...

  8. oracle中的number类型

    number 数据类型 number (precision,scale) a)    precision表示数字中的有效位,如果没有指定precision的话,oracle将使用38作为精度: b)  ...

  9. Date类型,Boolean类型,Number类型

    1.Date类型:  1)创建Date对象:    var date=new Date();  //Date对象会把当前日期和时间保存为其初始值 2)Date对象的方法:    --这些得到的都是数字 ...

随机推荐

  1. JAVA中的重载和重写

    重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载(Overloading)是一个类中多态性的一种表现 ...

  2. Ubuntu14.04-PXE装机笔记

    什么是PXE? PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从 ...

  3. Service的两种用法及其生命周期

    先来一点基础知识: Service 是android的四大组件之一,与Activity同属于一个级别,它是运行在后台进行服务的组件(例如在后台播放的音乐,播放音乐的同时并不影响其他操作).Servic ...

  4. 封装getElementsByClassName()

    function getElementsByClassName(node,classname){             if(node.getElementsByClassName){        ...

  5. hdu 5100 n*n棋盘放k*1长方条最多覆盖面积

    http://acm.hdu.edu.cn/showproblem.php?pid=5100 给一个n*n的棋盘,问用k*1的长方条最多能覆盖多大的面积(k个单位都必须完全覆盖上去) 首先,若n< ...

  6. 一些常用的Bootstrap模板资源站

    2013-11-13 23:28:09   超级Bootstrap模板库:http://www.wrapbootstrap.com/ 免费的HTML5 响应式网页模板:http://html5up.n ...

  7. MySQL中distinct和group by性能比较[转]

    MySQL中distinct和group by性能比较[转] 之前看了网上的一些测试,感觉不是很准确,今天亲自测试了一番.得出了结论(仅在个人计算机上测试,可能不全面,仅供参考) 测试过程: 准备一张 ...

  8. C++ 类的静态成员详细讲解

    在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用.所以在所有对象中都可以共享它.使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节 ...

  9. C#通过反射获取上层调用方法信息

    System.Diagnostics.StackFrame frame = ); System.Reflection.MethodBase method = frame.GetMethod(); st ...

  10. iis php5.3.8 默认文档无效 404 - 找不到文件或目录

    环境:WIN2008 R2 IIS7.5 / .NET4.X 新开1站点,使用php(5.3.8),默认首页文档已设置为index.php,网站所在目录的网站运行时用户权限正确,应用程序池是asp.n ...