`

Javascript优化后的加减乘除(解决js浮点数计算bug)

阅读更多
js在计算浮点数时候,结果可能会不准确。比如:(在chrome中的运算结果)
2.2 + 2.1 = 4.300000000000001
2.2 - 1.9 = 0.30000000000000027
2.2 * 2.2 = 4.840000000000001
2.1 / 0.3 = 7.000000000000001
优化方法如下:

function add(a, b) {
    var c, d, e;
    try {
        c = a.toString().split(".")[1].length;
    } catch (f) {
        c = 0;
    }
    try {
        d = b.toString().split(".")[1].length;
    } catch (f) {
        d = 0;
    }
    return e = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e;
}

function sub(a, b) {
    var c, d, e;
    try {
        c = a.toString().split(".")[1].length;
    } catch (f) {
        c = 0;
    }
    try {
        d = b.toString().split(".")[1].length;
    } catch (f) {
        d = 0;
    }
    return e = Math.pow(10, Math.max(c, d)), (mul(a, e) - mul(b, e)) / e;
}

function mul(a, b) {
    var c = 0,
        d = a.toString(),
        e = b.toString();
    try {
        c += d.split(".")[1].length;
    } catch (f) {}
    try {
        c += e.split(".")[1].length;
    } catch (f) {}
    return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
}

function div(a, b) {
    var c, d, e = 0,
        f = 0;
    try {
        e = a.toString().split(".")[1].length;
    } catch (g) {}
    try {
        f = b.toString().split(".")[1].length;
    } catch (g) {}
    return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), mul(c / d, Math.pow(10, f - e));
}
转自:http://www.2cto.com/kf/201502/376763.html
分享到:
评论

相关推荐

    解决JS浮点数(小数)计算加减乘除的BUG

    解决JS浮点数(小数)计算加减乘除的BUG

    浮点数加减乘除运算

    浮点数加减乘除运算,里面结合了从网上搜索到的accAdd版本以及新增版本的浮点加减乘除运算,明显能直出新补充方法能满足实际需求,解决js对于浮点运算的bug.

    解决javascript中的浮点数计算不精确问题

    在JavaScript编程中,浮点数计算不精确是一个常见的问题,源于其内部的二进制浮点数表示方式。本文将深入探讨这个问题,并提供解决方案。首先,我们要理解为什么会出现这种不精确性。 JavaScript遵循IEEE 754标准来...

    威纶通_宏指令_浮点数加减乘除开方计算机

    在提供的文件`威纶通_宏指令_浮点数加减乘除开方.emtp`中,你可以找到具体的宏指令实现示例,通过学习和实践这些示例,你可以熟练掌握在威纶通触摸屏上进行浮点数运算的方法。这不仅有助于理解宏指令的工作原理,还...

    mips整数模拟浮点运算的加减乘除

    mips整数运算模拟IEEE754浮点数运算的加减乘除

    用MIPS整数运算指令实现浮点数的加减乘除

    在MARS4.5中成功编译运行。有人机交互的字符界面,可供用户进行功能选择,用户输入浮点数,选择加减乘除功能,输出十进制,二进制,十六进制的结果。

    js加减乘除丢失精度问题解决方法

    在javascript中,当你使用小数进行加减乘除运算时,你会发现,所得到的结果有时后面带有长长的一段小数,使运算变得复杂,并且影响计算结果。上网查询了一下原因,大致如下:在javascript中,带小数的数据运算时总会...

    定点数浮点数计算 加减乘除

    加减乘除在定点数和浮点数上的运算有所不同。对于定点数,由于没有单独的指数部分,直接对整数部分进行相应的操作即可。但在处理溢出和下溢时需要特别注意,尤其是有符号定点数的正负溢出情况。浮点数运算则涉及到...

    浮点数的加减乘除运算

    浮点数的加减乘除运算是计算机科学中不可或缺的一部分,特别是在数值计算、科学计算以及图形处理等领域。浮点数由于能够表示较大的数值范围和精确度,被广泛应用于各种计算场景。下面我们将深入探讨浮点数运算的原理...

    红外遥控计算器 1602显示 51单片机 加减乘除括号小数浮点数 整数等运算 适用于所有51系列开发板,不同开发板需要修改程接口

    1602显示 红外遥控计算器 红外收发 1602显示 51单片机 加减乘除括号小数浮点数 整数等运算 适用于所有51系列开发板,不同开发板需要修改程接口 并且需要根据不同的红外遥控器设置对应的码值,在程序中做适当的修改。

    输入一个加减乘除的字符串可以计算的计算器

    在IT领域,设计一个能处理加减乘除的字符串计算的计算器是一项常见的任务,它涉及到字符串解析、数学运算以及编程语言的基本语法理解。这个计算器的目标是接收包含加、减、乘、除运算符的字符串,然后正确地计算出...

    js加减乘除计算器代码.zip

    在JavaScript编程语言中,创建一个加减乘除的计算器是一个基础但实用的练习。这个"js加减乘除计算器代码.zip"文件包含了一个简单的计算器应用的源代码,它具有扁平化设计,使得用户界面简洁易用。我们将深入探讨这个...

    浮点数和定点数的加减乘除.pdf

    浮点数和定点数的加减乘除.pdf

    NSDecimalNumber用法加减乘除解决字符串转float类.pdf

    NSDecimalNumber 用法加减乘除解决字符串转float 类 在 iOS 开发中,常常需要对数字进行各种操作,如加减乘除等,然而在实际开发中,会遇到各种问题,如字符串转换为浮点数、精度问题等。这时,NSDecimalNumber ...

    MathTask_单元测试_加减乘除运算_

    "MathTask_单元测试_加减乘除运算_"这个标题暗示我们正在处理一个与数学运算相关的项目,特别是涉及基本的加法、减法、乘法和除法。这个项目可能是一个计算器应用、一个数学库或者任何其他需要进行数值计算的软件...

    js 加减乘除

    ### JavaScript中的精确加减乘除实现 在JavaScript中进行数值计算时,经常会出现不精确的情况,尤其是涉及到小数运算时更为明显。这是因为JavaScript中的数字是以IEEE 754双精度浮点数(64位)格式存储的,这种格式...

    fpga实现浮点数加减乘除四则运算

    在 FPGA(Field-Programmable Gate Array)设计中,实现浮点数的加减乘除四则运算是一项挑战性的工作,因为浮点数运算涉及到复杂的数值处理和精度控制。这里我们将详细探讨根据IEEE754浮点数标准进行四则运算的原理...

    4字节浮点数计算工具

    本文将详细讨论“4字节浮点数计算工具”及其相关的知识点,包括浮点数的表示、16进制与10进制的转换以及在电力通信规约中的应用。 首先,浮点数是一种用于表示实数的数据类型,广泛应用于科学计算和计算机图形学等...

    Javascript 浮点数精确计算

    但是,这种方法在进行加减乘除等操作时需要额外的转换逻辑,性能上可能不如直接使用浮点数。 3. **使用特定库**:有一些JavaScript库,如`decimal.js`或`big.js`,专门用于处理高精度浮点数计算。这些库内部使用大...

Global site tag (gtag.js) - Google Analytics