重写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 怎么会 ...
随机推荐
- UVA 1569 Multiple
题意: 给定m个1位数字,要求用这些数字组成n的倍数的最小数字,如果无法组成就输出0 分析: BFS,由于n最大5000,余数最多5000,利用余数去判重,并记录下路径即可 代码: #include ...
- DEV GridControl导出到Excel或打印
//方法1SaveFileDialog fileDialog = new SaveFileDialog(); fileDialog.Title = "导出Excel"; fileD ...
- new关键字和newInstance()方法的区别
转载:http://blog.csdn.net/iloveyin/article/details/7965183 1.类的加载方式不同 在执行Class.forName("a.clas ...
- asp.net自动打卡、签到程序
目前公司上下班签到是上局域网的一个系统去点一下,由于打卡比较简单,所以有些快迟到的同事会找已经到公司的人帮忙代打卡.”以其它身份运行程序“来打开IE,去帮人打下,有时多几个人,也要这样操作,我感觉挺麻 ...
- Android_Dialog cancle 和dismiss 区别
AlertDialog使用很方便,但是有一个问题就是:dismiss方法和cancel方法到底有什么不同? AlertDialog继承与Dialog,现在各位看看结构图: 然后在Dialog类中找到了 ...
- 数组转DataTable
using System; using System.Data; namespace ArrayToDataTable { class ArrayToDataTable { /// <summa ...
- laravel的模块化是如何实现的
laravel的模块化是如何实现的 在laravel提供的官方文档上,有一个这样的名词 服务提供者,文档中介绍了它在laravel框架中的角色,以及如何使用它,但却没有讲明服务提供者的本质--它是为了 ...
- php 生成唯一的订单
/** * 生成唯一的订单号 20110809111259232312 * 2011-年日期 * 08-月份 * 09-日期 * 11-小时 * 12-分 * 59-秒 * 2323-微秒 * 12- ...
- JavaScript压缩混淆 / 格式化 / 美化工具 - aTool在线工具
原文地址:http://www.atool.org/jscompression.php
- poj1477---搭积木
#include<stdio.h> #include<stdlib.h> int main() { int n,i; int bricks[55],set=0; while(s ...