<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> JS 浮点计算精度问题 </title> </head> <body> <script type="text/javascript"> <!-- function accDiv(arg1, arg2) { var t1 = 0, t2 = 0, t3 = 0, r1, r2; try { t1 = arg1.toString().split(".")[1].length } catch (e) { } try { t2 = arg2.toString().split(".")[1].length } catch (e) { } r1 = Number(arg1.toString().replace(".", "")) r2 = Number(arg2.toString().replace(".", "")) if (r2 == 0) return 0; var result = String(r1 / r2); try { t3 = result.toString().split(".")[1].length } catch (e) { } var index = t2 - t1 - t3; if (index < 0) { result = result.replace(".", ""); while (result.length <= Math.abs(index)) { result = '0' + result; } var start = result.substring(0, result.length + index); var end = result.substring(result.length + index, result.length); result = start + '.' + end; return Number(result); } else if (index > 0) { result = result.replace(".", ""); while (result.length <= Math.abs(index)) { result += '0'; } return Number(result); } else return Number(result.replace(".", "")); } //给Number类型增加一个div方法,调用起来更加方便。 Number.prototype.div = function (arg) { /// <summary> /// 除法 /// </summary> return accDiv(this, arg); } 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) } Number.prototype.mul = function (arg) { /// <summary> /// 乘法 /// </summary> return accMul(arg, this); } function accAdd(arg1, arg2) { var r1, r2, m, c; try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } c = Math.abs(r1 - r2); m = Math.pow(10, Math.max(r1, r2)) if (c > 0) { var cm = Math.pow(10, c); if (r1 > r2) { arg1 = Number(arg1.toString().replace(".", "")); arg2 = Number(arg2.toString().replace(".", "")) * cm; } else { arg1 = Number(arg1.toString().replace(".", "")) * cm; arg2 = Number(arg2.toString().replace(".", "")); } } else { arg1 = Number(arg1.toString().replace(".", "")); arg2 = Number(arg2.toString().replace(".", "")); } return (arg1 + arg2) / m } Number.prototype.add = function (arg) { /// <summary> /// 加法 /// </summary> return accAdd(arg, this); } // 除法,两种写法,都可以,其他一样 alert(accDiv(2.1,10)); alert(2.1.div(10)); // 乘法 alert(accMul(2.1,0.01)); //--> </script> </body> </html>
相关推荐
由于javascript的浮点运算是不精确的(对于大多数编程语言都是这样),此程序使用整数来代替浮点数进行运算,最后再转化为浮点数,可以实现对设置范围内(运算范围在程序中为自定义变量range)的浮点运算实现精度...
NULL 博文链接:https://xide829.iteye.com/blog/663554
底层硬件如何实现浮点运算,详细解释fpga实现浮点运算
浮点运算方法和浮点运算器。主要介绍浮点运算的方法和流程以及浮点运算器。
stm32f407 FPU 浮点运算mdk源代码
stm32f1 M3 浮点快速运算库,采用汇编指令编写的运算库,浮点运算速度,比默认的库速度更快。 可以直接包含文件中使用。
js中浮点类型数据的计算 7.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字...
stc15系列单片机浮点运算性能测试结果是用数码管显示的,自己可以改
单精度浮点转换器用于把十进制,十六进制的单精度浮点相互转换
浮点数转化器,单精度浮点计算软件,FLOAT转HEX
计算 k *∑(x^i), -m ≤ i ≤ n,精确到小数点后14位(最后要求四舍五入)。 【输入形式】 从文件sigma.in中顺序读入4个由空格分隔的正整数k、x、m、n。(1≤ k、x、m、n ≤ 100)。 【输出形式】 将...
TI官方浮点运算库,支持各种算法,效果比自己用C编写的效果要好,运算速度快,很实用。
此函数是我自己写的,虽然在网上可以搜到很多,不过我找到的都是在算法中存在基本的浮点数的运算,导致结果仍然是错误的。由于刚刚学写JS,所以可能考虑不够周全,望大家批评指正。 代码中加了四舍五入函数,是网上...
Faster rcnn test浮点运算次数,包括:卷积实现过程,Faster rcnn总体结构和参数
今天小编就为大家分享一篇浅谈linux kernel对于浮点运算的支持,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
计算机组成原理:3.5 浮点运算器.ppt
S7-200SMART 双精度浮点型数据转换为单精度浮点型的方法
单精度浮点运算单元的FPGA设计与实现.pdf
将此文件解压后放置到keil\lib目录下,可以解决keil不能进行浮点运算的问题。
深入理解如何进行单精度浮点计算,怎样才能使计算出来的误差更小。