js浮点数精确计算(加、减、乘、除)

代码如下:

<SPAN style="FONT-SIZE: 18px">//说明: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 
}</SPAN>

代码如下:

<SPAN style="FONT-SIZE: 18px">

//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。  
//调用:accSub(arg1,arg2)  
//返回值:arg1减上arg2的精确结果  
function accSub(arg1,arg2){     
    return accAdd(arg1,-arg2); 
}</SPAN>

代码如下:

<SPAN style="FONT-SIZE: 18px">

//说明: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) 
}</SPAN>

代码如下:

<SPAN style="FONT-SIZE: 18px">

//说明: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); 
    } 
}</SPAN>

(0)

相关推荐

  • js判断输入是否为正整数、浮点数等数字的函数代码

    1.下面列出了一些判读数值类型的正则表达式 复制代码 代码如下: /^\d+$/ //非负整数(正整数 + 0) /^[0-9]*[1-9][0-9]*$/ //正整数 /^((-\d+)|(0+))$/ //非正整数(负整数 + 0) /^-[0-9]*[1-9][0-9]*$/ //负整数 /^-?\d+$/ //整数 /^\d+(\.\d+)?$/ //非负浮点数(正浮点数 + 0) /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0

  • JavaScript浮点数及运算精度调整详解

    JavaScript 只有一种数字类型 Number,而且在Javascript中所有的数字都是以IEEE-754标准格式表示的.浮点数的精度问题不是JavaScript特有的,因为有些小数以二进制表示位数是无穷的. 十进制       二进制 0.1              0.0001 1001 1001 1001 - 0.2              0.0011 0011 0011 0011 - 0.3              0.0100 1100 1100 1100 - 0.4 

  • javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】

    本文实例讲述了javascript基于牛顿迭代法实现求浮点数的平方根.分享给大家供大家参考,具体如下: 今天在网上看到一则利用牛顿迭代法求浮点数的平方根的方法,发现很好,比一些语言自带的sqrt方法运行要快,在这里备份一下,以待后用,这里稍微做了些改动. 首先是牛顿迭代法原理: 比如我们要求a的平方根,首先随便猜一个近似值x,然后不断令x等于x和a/x的平均数,迭代几次后x的值就已经相当精确了. 如我们要求的数学假设为 a=7, var x=a; ( 7  + 7/7 ) / 2 = 3.642

  • Javascript中浮点数相乘的一个解决方法

    Javascript中的浮点数相乘是个很有意思的事情. 浮点数相乘有很多方式,下面是我给出的一个我自己认为不错的解决方案: 复制代码 代码如下: function FxF(f1, f2) {    f1 += '';    f2 += '';    var f1Len = f1.split('.')[1].length,        f2Len = f2.split('.')[1].length; if (f1Len) {        f1 = f1.replace('.', '');   

  • JavaScript实现算术平方根算法-代码超简单

    前几天看见了一个来自雷神之槌的平方根源码,原理多方有介绍,不赘述. 源码是c语言写的,我思考后发现这样的算法在javascript中也是可以完成的. function InvSqrt(x){ var h=0.5*x; var b=new ArrayBuffer(4); var d=new DataView(b,0); d.setFloat32(0,x); var i=d.getInt32(0); i=0x5f375a86-(i>>1); d.setInt32(0,i); var r=d.get

  • javascript将浮点数转换成整数的三个方法

    Summary 暂时我就想到3个方法而已.如果读者想到其他好用方法,也可以交流一下 parseInt 位运算符 Math.floor Math.ceil Description 一.parseInt 1. 实例 parseInt("13nash");//13 parseInt("")// NaN parseInt("0xA") //10(十六进制) parseInt(" 13")//13 parseInt("070&

  • js浮点数保留两位小数点示例代码(四舍五入)

    复制代码 代码如下: var changeTwoDecimal_f= function (floatvar){      var f_x = parseFloat(floatvar);      if (isNaN(f_x)){          return '0.00';      }      var f_x = Math.round(f_x*100)/100;      var s_x = f_x.toString();      var pos_decimal = s_x.indexO

  • javaScript实现浮点数转十六进制字符

    最近一个嵌入式项目中需要WEB功能,因此想到利用HTML+JavaScript实现一些参数配置功能,参数由JavaScript生成十六进制数据,通过POST提交给单片机,然后再直接使用,以充分利用浏览器的计算能力. 由于JavaScript对浮点数的支持很弱,直接使用浮点数转十六进制功能,双不能实现平常在C语言中实现的4字节的存储表示法,通过搜索,并没有找到相关功能代码,在Node.js的Buffer类可以实现此功能,但又没办法使用(单片机存储空间有限),也没办法找到具体是如何实现的(看不太懂)

  • 深入理解JavaScript中的浮点数

    js只有一种数值型数据类型,不管是整数还是浮点数,js都把归为数字. typeof 17;   // "number" typeof 98.6; // "number" typeof –2.1; // "number" js中的所有数字都是双精度浮点数.是由IEEE754标准制定的64位编码数字(这个是什么东东,不知道,回头查一下吧) 那么js是如何表达整数的,双精度浮点数可以完美地表示高达53位精度的整数(没有什么概念,没处理过多大的数据,没用

  • 在JavaScript中使用开平方根的sqrt()方法

    这个方法返回一个数的平方根.如果数的值是负的,开方返回NaN. 语法 Math.sqrt( x ) ; 下面是参数的详细信息: x: 一个数字 返回值: 返回一个数字的正弦值. 例子: <html> <head> <title>JavaScript Math sqrt() Method</title> </head> <body> <script type="text/javascript"> var

  • JavaScript检查数字是否为整数或浮点数的方法

    本文实例讲述了JavaScript检查数字是否为整数或浮点数的方法.分享给大家供大家参考.具体如下: 检查是否为整数: function isInt(n) { return typeof n === 'number' && n % 1 == 0; } // or ,this support ie3 function isInt(n) { return typeof n === 'number' && parseFloat(n) == parseInt(n, 10) &

随机推荐