0.9999999999999999999999 == 1?

来源:互联网 发布:js如何定义集合 编辑:程序博客网 时间:2024/04/25 11:41

如题

#include<stdio.h>int main(){    if(0.99999999999999999 == 1) // 17位        printf("Yes\n");    else        printf("No\n");    if(0.9999999999999999 == 1)  // 小数位 共16位         printf("Yes\n");    else        printf("No\n");}

结果:

Yes
No

原因

  1. 浮点数默认时double型。
  2. double 小数位16位
  3. 浮点数超出精度,会自动四舍五入。

其他

浮点数不能 用 == 比较0

从如何判断浮点数是否等于0说起——浮点数的机器级表示