图中代码a=0.1时就是no.
把图中代码a改成0.5就是yes.了
float型变量在这里存在什么缺陷呢?
顺便问一下Visual Studio2008中调试c++文件的F5和ctrl+F5有什么区别?有时候用F5会直接跳出,而用ctrl+F5则不会
图中代码a=0.1时就是no.
把图中代码a改成0.5就是yes.了
float型变量在这里存在什么缺陷呢?
顺便问一下Visual Studio2008中调试c++文件的F5和ctrl+F5有什么区别?有时候用F5会直接跳出,而用ctrl+F5则不会
因为计算机是用二进制0和1存储信息的,对于十进制的小数,需要先转成二进制才能存入计算机(整数部分除2取余,小数部分乘2取整,这个知道吧),在十进制0.1和0.9之间(包括0.1和0.9)的小数,转换成二进制后只有0.5才能转换成有限小数,而其它的只能转换成无限小数,float和double根据其精度来对该无限小数进行截取存入计算机,这样就出现了你看见的情况
改成这样就可以了:
#include<stdio.h>
main()
{
float a=0.1;
if(a==(float)0.1) printf("yes.\n");
else printf("no.\n");
}
不得不说你提的问题相当不错,但是我也没注意到这个问题
不过你顺便问一下的问题如果你用的是C语言,可以最后加一个getchar();不知道VS识别不。
CTRL按住就是不调试,在C#语句里最后都是加上一个Console.ReadKey();这样的话就是缓冲一下,等你按任意键才关闭!