js中如何判断两个浮点数是否相等

JavaScript018

js中如何判断两个浮点数是否相等,第1张

js中Number类型表示数字,采用“IEEE 754 标准定义的双精度64位格式”表示数字,不区分整数值和浮点数值,均采用浮点数值表示,所以在进行数字运算的时候要特别之一进度缺失问题。

js中0.1+0.2 == 0.3吗?

那么如何判断两个浮点数直接相等呢?

1、精度判断法

2、使用toFixed()方法

toFixed()方法可以把Number四舍五入为指定小数的数字。

语法

NumberObject.toFixed(num)//num代表要保留的小数位数。

但是toFixe存在不精准的问题:

解决方法:

重写toFixed()方法:

参考:

https://blog.csdn.net/undytk/article/details/88912386

https://blog.csdn.net/qq_33237207/article/details/81668457

正则表达式方法function checkRate(input){var re = /^[0-9]+.?[0-9]*$///判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$/ if (!re.test(input.rate.value)){alert("请输入数字(例:0.02)")input.rate.focus()return false}}下面为普通函数写法function BASEisNotNum(theNum){//判断是否为数字if (BASEtrim(theNum)=="")return truefor(var i=0i1 &&theInt.substring(0,1)=="0") || BASEisNotNum(theInt)){return true}return false}function BASEisNotFloat(theFloat){//判断是否为浮点数len=theFloat.lengthdotNum=0if (len==0)return truefor(var i=0i1)return true}if (len>1 &&theFloat.substring(0,1)=="0"){if (theFloat.substring(1,2)!=".")return true}return falseisNaN 函数isNaN(expression:Object) : Boolean计算参数,如果值为 NaN(非数字),则返回 true。此函数可用于检查一个数学表达式是否成功地计算为一个数字。可用性:Flash Player 5;ActionScript 1.0参数expression:Object - 要计算的布尔值、变量或其它表达式。返回Boolean - 一个布尔值。例子:if(isNaN(document.login.imgcode.value)){alert('验证码必须是数字!')