`

javascript 两个float 运算的bug

 
阅读更多

 

 

//说明: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
}
//给Number类型增加一个add方法,调用起来更加方便。
Number.prototype.add = function (arg){
return accAdd(arg,this);
}


减法

//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSub(arg1,arg2)
//返回值:arg1减上arg2的精确结果
function accSub(arg1,arg2){
return accAdd(arg1,-arg2);
}
//给Number类型增加一个sub方法,调用起来更加方便。
Number.prototype.sub = function (arg){
return accSub(this,arg);
}

乘法
//说明: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)
}
//给Number类型增加一个mul方法,调用起来更加方便。
Number.prototype.mul = function (arg){
return accMul(arg, this);
}


 除法
Js代码
//说明: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);
}
}
//给Number类型增加一个div方法,调用起来更加方便。
Number.prototype.div = function (arg){
return accDiv(this, arg);
}

  
 

 

分享到:
评论

相关推荐

    javascript中的float运算精度实例分析

    在JavaScript编程中,浮点数的运算精度是一个需要特别注意的问题。在处理金融数据、科学计算或任何需要精确数值的场景下,精度问题尤为突出。JavaScript中的number类型是基于IEEE 754标准的双精度浮点数表示,意味着...

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

    4. **比较时的误差范围**:在比较浮点数时,不要直接用等号`=`,而是设定一个极小的误差范围,如`Math.abs(a - b) ,来判断两个数是否足够接近。 5. **使用`BigInt`**:对于非常大的整数,JavaScript的`BigInt`类型...

    JAVASCRIPT 写一个函数 , 用户输入任意两个数字的任意算数运算 (简单的计算器小功能) , 并能弹出运算后的结果

    var num1 = prompt('请输入第一个数:'); var re = prompt('请输入你要进行的运算符:'); var num2 = prompt('请输入第二个数:'); function getSum(num1,re,num2,) { switch (re) { case '+': return num1 + ...

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

    本文将详细介绍如何解决JavaScript中的浮点型运算BUG,并提供一些实用的函数来实现更精确的计算。 首先,我们要理解JavaScript中的浮点数运算误差。在计算机内部,浮点数是以二进制形式存储的,但不是所有十进制...

    使用HTML5、CSS3和JavaScript实现简易四则运算

    对于四则运算,可以创建一个函数,接收两个数字和运算符作为参数,根据运算符执行相应的数学操作。例如: ```javascript function calculate(num1, num2, operator) { switch (operator) { case '+': return num...

    JavaScript中的数学运算介绍.docx

    JavaScript中的数学运算主要涵盖基本算术运算和使用Math对象的高级计算。JavaScript支持常见的加法(+), 减法(-), 乘法(*), 除法(/)以及取模(%)运算符。此外,它还提供了处理特殊计算结果的能力,如正负Infinity和NaN...

    JavaScript实现算术运算算子演示系统

    这个示例中,当用户点击“加法”按钮,JavaScript会获取两个输入框的值,进行加法运算,并将结果显示在页面上。 总的来说,“JavaScript实现算术运算算子演示系统”是一个集成了JavaScript、HTML5和CSS3技术的项目...

    计算器运算逻辑实现(带括号,求余,乘方,加减乘除),不使用eval函数-前端JavaScript 源码实现-括号匹配与初等运算

    当遇到一个运算符时,取出栈顶的两个操作数,应用相应的运算,然后将结果压回栈中。这样,最终栈顶的值就是整个表达式的结果。 至于HTML和CSS部分,HTML用于构建计算器的用户界面,包括按钮布局、输入框等元素。CSS...

    JavaScript应用实例-有bug的文件选择对话框2.js

    JavaScript应用实例-有bug的文件选择对话框2.js

    JavaScript 浮点 运算 函数

    可是由于积分已经接近0,没办法下载了,所以还是决定把它发出来,赚几个积分。 此函数是我自己写的,虽然在网上可以搜到很多,不过我找到的都是在算法中存在基本的浮点数的运算,导致结果仍然是错误的。由于刚刚学写...

    使用Vue.js及Element编写的精度浮点运算计算器源码(打开运行)

    由于javascript的浮点运算是不精确的(对于大多数编程语言都是这样),此程序使用整数来代替浮点数进行运算,最后再转化为浮点数,可以实现对设置范围内(运算范围在程序中为自定义变量range)的浮点运算实现精度...

    Javascript版俄罗斯方块(含Bug)

    俄罗斯方块是大家所熟知的经典游戏,本着试试看的态度,我完成了这个Javascript版,不过美中不足的是在游戏的过程中有可能会出现错误,游戏的时间越长,错误出现的概率越大,针对这个Bug,我无能为力。希望有高手...

    四则运算自动计算结果

    本资源展示了如何使用JavaScript实现四则运算自动计算结果的功能。该功能可以在用户输入数字时自动计算结果,并将结果显示在文本框中。如果用户输入的值为非数字,则清空文本框。 JavaScript事件 在本资源中,我们...

    纯 HTML+CSS+JavaScript 的计算器

    4.0版:修复多个多个运算符号导致不能计算的bug; 5.0版: 多个小数点的bug, 自然数e的问题, 0.1,0.2,0.04等小数在使用Math.pow(value, 几次幂) 函数开2次幂,3次幂时的问题 这个版本只能进行7位数以下的开方和...

    JavaScript计算出两个数的差值

    标题中的“JavaScript计算出两个数的差值”指的是在JavaScript编程语言中,如何获取两个数值并计算它们之间的差。在JavaScript中,这是一个基础的数学运算,可以通过简单的减法操作实现。描述提到了“示例代码介绍的...

    【JavaScript源代码】JavaScript中极易出错的操作符运算总结.docx

    在JavaScript中,比较运算符主要用于比较两个值的大小或是否相等。`>`、`、`>=`、`、`==`和`!=`是常见的关系运算符,而`===`和`!==`则是全等和不全等运算符。`NaN`在比较运算中具有特殊性,`NaN !== NaN`,即使两个...

    使用逆波兰表达式实现的四则运算解析库计算器

    在逆波兰表达式中,一个表达式如 "2 + 3 * 4" 将被转换为 "2 3 4 *" 的序列,这样计算器只需依次读取数字和操作符,遇到操作符时对栈顶的两个数字进行运算,然后将结果压入栈。这种方法消除了括号的需要,简化了运算...

    Javascript实现基本运算器

    用Javascript实现一个基本的运算器,具体内容如下 使用表格布局,JS添加事件 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>计算器</title> </...

    JavaScript基础复习大纲

    JavaScript 与 Java 区别没有任何关系,两个公司开发的两个不同的产品,作用与用途大不一样,但两者语法上有很多相似之处,JavaScript 并不是 Java 的子集。 六、JavaScript 代码的位置 我们可以在 3 个地方编写...

Global site tag (gtag.js) - Google Analytics