`

【转】JS浮点数偏差解决方案

 
阅读更多

转自:http://www.wdshare.org/article/56e7c94a0582906429d3126e

 

// 浮点数求和
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));
}
 
分享到:
评论

相关推荐

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

    JavaScript实现浮点数转十六进制字符的过程涉及到了浮点数的表示、IEEE 754标准、二进制与十六进制的转换等多个知识点。由于JavaScript直接使用浮点数转十六进制的功能实现并不直接,因此需要借助其他方法来实现。...

    十六进制数转换为浮点数浮点数转换

    在计算机科学中,十六进制(Hexadecimal)和浮点数(Floating Point)是两种不同的数值表示方式。十六进制是一种逢16进1的数制,常用于编程和计算机内存中表示数据,因为它可以更紧凑地表示二进制数。而浮点数则是一...

    十六进制转浮点数,十六进制转浮点数在线,LabView

    "十六进制转浮点数.vi"这个文件很可能是一个LabVIEW VI,它实现了上述转换功能。使用这个VI时,你需要将16进制的字符串输入到VI中,VI会输出相应的浮点数。如果你需要查看或修改这个VI的工作原理,可以打开它来查看...

    js 浮点数加法运算

    javascript浮点数加法运算精确计算方法,能够有效避免无限循环小数的产生

    js浮点数处理转精确值

    另一种解决方案是使用JavaScript的`Number.toFixed()`方法,它会将数字四舍五入到指定的小数位数。然而,这个方法并不会改变原始数值,而是返回一个字符串。因此,如果你需要进行进一步的数学运算,需要将字符串再...

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

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

    用Verilog实现整数转浮点数

    本话题聚焦于如何使用Verilog实现整数到浮点数的转换,这是一种在计算领域常见的数据类型转换,对于理解和实现高性能计算系统至关重要。 浮点数表示法是计算机科学中的一个关键概念,它允许存储和处理具有小数部分...

    HEX与浮点数相互转换

    标题中的“HEX与浮点数相互转换”指的是在计算机科学中处理数字时的一个常见操作。HEX(十六进制)是计算机中广泛使用的数字表示方式,尤其在内存和CPU指令中,而浮点数则用于表示带有小数部分的数值,常用于科学...

    16进制转浮点数的算法

    1. **16进制转浮点数**: - `Val` 函数:VB中的`Val`函数可以用来将包含数字的字符串解析为数值,包括16进制。例如,`Val("&H1A")`会将16进制数`1A`转换为十进制数26。 - `CDbl` 函数:要将16进制数转换为浮点数,...

    labview十六进制转浮点数程序

    总之,“十六进制转浮点数.vi”是LabVIEW中解决特定通信问题的一个实例,它展示了如何利用LabVIEW的图形化编程能力来处理数值转换,特别是与底层硬件通信相关的复杂数据格式转换。理解和掌握这种程序的构建原理,...

    float_2_char.zip_C51 float转char_单片机 浮点数_浮点数 char_浮点数 转换_浮点数转换

    `float_2_char.zip` 提供的代码着重解决了单片机中浮点数(`float`)与字符型(`char`)之间的转换问题,这对于节省存储空间、提高通信效率以及降低错误率非常有用。下面将详细介绍浮点数与字符型之间的转换原理和...

    4字节十六进制转浮点数工具(Excel)

    在这个场景中,我们有一个名为"4字节十六进制转浮点数工具(Excel)"的实用程序,它利用Microsoft Excel的功能将4字节的十六进制数值转换为对应的浮点数表示。这种转换在处理二进制数据、网络通信或低级别编程时尤为...

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

    本文将深入探讨这个问题,并提供解决方案。首先,我们要理解为什么会出现这种不精确性。 JavaScript遵循IEEE 754标准来存储和运算浮点数。该标准规定,浮点数以二进制小数的形式存储,但并非所有十进制数字都能精确...

    Labview 十六进制四字节转浮点数

    自动将十六进制字符串转换为浮点数数组,可解决广大labview初学者开始学习时遇到的困难,可直接作为调用,并且转化成浮点数数组提高了自动转化效率,

    浮点数二进制互转小工具

    描述中的“浮点数转二进制,二进制转浮点数”是指该工具支持两种主要功能:一是将十进制的浮点数转换为二进制表示,二是将二进制串转换回浮点数。浮点数的二进制表示遵循IEEE 754标准,这是一个国际标准,定义了...

    十进制浮点数转IEEE754浮点数

    十进制浮点数转IEEE754浮点数,利用C语言中的union

    字节转浮点数工具

    因为调试需要把下位机传上来的4字节数转成浮点数查看,网上找的都不能很好的使用,有的还有病毒,所以自己做了这个小程序。C#做的,机器上有.NET Fromwork 4就可以直接使用。 使用方法:在上面4个文本框中输入4个16...

    IEEE754浮点数_数值转换_浮点数转换_

    IEEE754浮点数标准是计算机科学中用于表示和操作浮点数的国际标准,由电气和电子工程师协会(IEEE)制定。这个标准对于数字计算的精确性和可移植性至关重要,广泛应用于现代计算机系统、编程语言以及硬件处理器。在...

    4为ASCII码与浮点数相互转换

    可以在浮点数和4位ASCII码之间相互转换

    十六进制数转为浮点数

    "十六进制转化为浮点数.sln"很可能是一个Visual Studio解决方案文件,包含了项目的源代码和编译信息,用于开发和调试这个转换工具。"UpgradeLog.XML"可能是项目升级日志,记录了软件更新的历史。"Backup"目录可能是...

Global site tag (gtag.js) - Google Analytics