`
wandejun1012
  • 浏览: 2720676 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

精确JS乘除法

    博客分类:
  • JS
 
阅读更多

安全的JS乘法代码:

 

	//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
	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);
}
	

 

 

安全的除法代码:

//除法函数,用来得到精确的除法结果
	//说明: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);
	    }
	}
 
分享到:
评论
1 楼 gaowyryang 2014-04-17  
给力给力给力

相关推荐

    javascript(js)的小数点乘法除法问题详解

    js在处理小数的乘除法的时候有一个bug,解决的方法可以是:将小数变为整数来处理。以上的计算可以改为:12.32 * 100 * 7 /100得出的结果是:86.24,正确。 另外再计算一下:8.80 * 100 * 12 / 100结果:105....

    test_JS-数字精确计算_

    例如,`BigNumber`类在`bignumber.js`库中可以用来创建一个大数对象,并提供加、减、乘、除等方法,确保计算结果的精确性。 在给定的文件中,`index.js`可能包含了使用上述策略之一或多种实现的代码。例如,它可能...

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

    代码如下:<SPAN xss=removed>//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 //调用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精确结果 ...

    详解js加减乘除精确计算

    在给定的代码中,作者封装了四个函数,分别用于加法(`floatAdd`)、减法(`floatSub`)、乘法(`floatMul`)和除法(`floatDiv`)操作,以实现更精确的计算。 `floatAdd`函数首先计算两个数的小数位数,取最大值...

    JS浮点数运算结果不精确的Bug解决

    常见的浮点数运算不精确的例子包括加法、减法、乘法和除法。例如,0.1 + 0.2 不等于 0.3,而是等于 0.30000000000000004。这种情况产生的原因在于,浮点数在二进制表示下无法精确地表示某些十进制小数,比如0.1和0.2...

    js库bignumber.js_v9.0.2

    超出这个范围的数值,尤其是进行乘法、除法、加法、减法等运算时,可能会丢失精度,导致结果错误。 ### 二、bignumber.js的功能与优势 1. **高精度计算**: `bignumber.js`支持任意大小的整数和浮点数,解决了...

    javascript解决小数的加减乘除精度丢失的方案

    4. 除法(accDiv)函数:这个函数处理除法时的小数精度问题,通过调整除数和被除数的小数部分位数,并进行相应的乘除操作,来获得精确的商。 在实际开发过程中,当遇到JavaScript中的小数运算精度问题时,可以通过...

    js关于精确计算和数值格式化以及直接引js文件

    4. 除法函数Div:该函数在计算时先确定小数点后位数的差异,然后对除数arg2进行相应的放大处理,使之与被除数arg1的小数位数相同,再执行除法运算,并最后根据参数d控制精度。 其次,关于数值格式化,本文还提供了...

    js中浮点型运算BUG的解决方法说明.docx

    它首先获取每个数字的小数位数,然后使用`Math.pow(10, t2 - t1)`来调整除法结果,从而得到精确的值。 2. **精确乘法函数**(`accMul`): 对于乘法操作,误差同样源于小数部分。该函数计算出两个输入数字的小数...

    javascript加减乘除的简洁实例_.docx

    最后,将两个参数转换为整数并相除,得到的结果再乘以调整比例,从而得到精确的除法结果。 接着,乘法函数`accMul`类似地处理了浮点数乘法的精度问题。它同样获取小数部分的长度,然后将两个参数转换为整数相乘,再...

    前端项目-bignumber.js.zip

    // 除法 z = x.pow(2); // 幂运算 ``` 3. **比较操作**:你可以比较两个大数的大小,包括大于、小于、等于等关系。这在排序或条件判断中很有用。 ```javascript var isGreaterThan = x.greaterThan(y); var ...

    javascript小数精度丢失的完美解决方法

    除法函数accDiv的原理是先计算除数的小数位数差,将被除数与除数转换为整数(放大10的倍数),然后用自定义的乘法函数accMul计算结果,并将结果缩小相应的倍数,以保证除法运算的精度。 以上方法的共同原理是在进行...

    js处理浮点算法

    ### 除法运算 ```javascript 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 ...

    javascript加减乘除的简单实例.docx

    总结来说,这个实例提供了一套处理JavaScript中浮点数运算精度问题的解决方案,确保在进行加、减、乘、除运算时能得到精确的结果,尤其在涉及小数的场景下。通过自定义函数和扩展字符串类型,可以更方便地在代码中...

    Javascript四舍五入(二)源码

    ### JavaScript 四舍五入...其中,`Math.round()`结合乘除法是最标准且最常用的四舍五入实现方式,而其他方法虽然实现简单但主要应用于展示而非精确计算的场合。在实际开发中,根据具体需求选择最合适的方法至关重要。

    解决JS浮点数运算出现Bug的方法

    1. **精确除法函数**: 提供的代码示例中有一个名为 `accDiv` 的函数,它通过去除数字的小数点,进行整数除法,然后根据小数部分的位数调整结果。这个函数通过将两数相除后乘以10的幂来修正误差,其中幂的值等于两...

    JS小数运算出现多为小数问题的解决方法

    例如,一个用于精确除法的函数accDiv,它通过计算两个数的小数位数,将它们转换成整数,然后执行除法运算,最后再根据小数位数进行适当的缩放,以得到精确的结果。同理,我们可以编写用于乘法和加法的函数accMul和...

    javascript加减乘除的简单实例

    在JavaScript中,进行基本的数学运算,如加、减、乘、除,通常是直接使用操作符`+`、`-`、`*`和`/`。然而,当我们处理涉及小数的计算时,可能会遇到精度丢失的问题。这是因为JavaScript中的Number类型在表示浮点数时...

Global site tag (gtag.js) - Google Analytics