美文网首页
js中如何判断两个浮点数是否相等

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

作者: 唯吾听烟雨 | 来源:发表于2021-03-07 11:08 被阅读0次

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

经典面试问题

js中0.1+0.2 == 0.3吗?

0.1 + 0.2 = 0.30000000000000004;
0.1 + 0.2 == 0.3; // false

那么如何判断两个浮点数直接相等呢?
1、精度判断法

var delta = 1e-5; // 定义精度精确到0.00001
var a = 0.1;
var b = 0.2;
var sum = 0.3;
// 判断相差小于精度就认为相等
if(a + b - sum < delta) {
    console.log('a + b == sum');
}

2、使用toFixed()方法
toFixed()方法可以把Number四舍五入为指定小数的数字。
语法
NumberObject.toFixed(num); //num代表要保留的小数位数。
但是toFixe存在不精准的问题:

console.log(1.35.toFixed(1)); // 1.4 正确
console.log(1.335.toFixed(2)); // 1.33 错误
console.log(1.3335.toFixed(3)); // 1.333 错误
console.log(1.33335.toFixed(4)); // 1.3334 正确
console.log(1.333335.toFixed(5)); // 1.33333 错误
console.log(1.3333335.toFixede(6)); // 1.333333 错误

解决方法:
重写toFixed()方法:

Number.prototype.toFixed = function (s) {
     var times = Math.pow(10, s);
     //如果是正数,则+0.5,是负数,则-0.5
     const adjust = this >= 0 ? 0.5 : -0.5;
     var des = this * times + adjust;
     des = parseInt(des, 10) / times;
     return des + '';
}
console.log(1.335.toFixed(2)); // 1.34 正确

参考:
https://blog.csdn.net/undytk/article/details/88912386
https://blog.csdn.net/qq_33237207/article/details/81668457

相关文章

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

    我们都知道C语言中如何判断两个整形数据是否相等,直接用==就可以判断。但是判断两个浮点数是否相等却不能用==。fl...

  • Cocos2dx之C++基础(五)

    const char ? 之间的关系 如何判断系统是32位还是64位 如何比较两个浮点数是否相等

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

    js中Number类型表示数字,采用“IEEE 754 标准定义的双精度64位格式”表示数字,不区分整数值和浮点数...

  • Java判断浮点数相等

    判断浮点数是否相等 不可以 直接用 ==

  • python集合操作

    判断两个list是否相等 判断两个tuple是否相等 判断两个set是否相等 list转set list转tupl...

  • JS判断两个复杂变量是否相等—递归🥰

    前言 JS中判断两个变量是否相等,是我们经常遇到的问题。今天我要探讨的问题是如何优雅的比较复杂变量。 JS中比较变...

  • 判断两个数组是否相等

    如何比较两个数组内容是否相等一、不能通过 '==' 或者 '===' 来判断两个数组是否相等 因为JavaScr...

  • 心得

    java 浮点数不能直接判断两个数相等。 正确写法是

  • 编程技巧

    注意地方 判断两个浮点数a 和 b 是否相等应该判断二者之差的绝对值fabs(a-b)是否小于某个阈值,例如1e-...

  • python笔记day6

    补充: == 和 is == --- 判断两个数据的值是否相等 is --- 判断地址是否相等 python数...

网友评论

      本文标题:js中如何判断两个浮点数是否相等

      本文链接:https://www.haomeiwen.com/subject/atkrqltx.html