\ue50a2011-11-30　17:28:43　\ue50bPS　:在阅读本篇文章之前,最好先搞清楚:　1.　数据类型在计算机内的存储方式;　2.　数据类型在　VC++　或者　GCC　中的数值范围和精度。　如果对以上两点不清楚,请先阅读另一篇文章《计算机的数据存储及　VC++/GCC　的数值范围》:　另外,看完本篇文章后,再去学习一下　Java　的数据类型,能够极大地加深理解。　判断一个数是否是“整型”(　int　),调用系统函数即可　#include　#include　using　namespace　std;　int　main()　{　double　i=3;　cout　=0)　if(　(n-(int)n)　　0.999999999999999　)　//　双精度对应　1e-15　和15　个9(　单精度对应　1e-6　和6个9)printf("YES\n");　else　printf("NO\n");　else　if(　-(n-(int)n)　　0.999999999999999　)　printf("YES\n");　else　printf("NO\n");　解析:　当n>=　0　时,那么只要　(n-(int)n)　　0.999999999999999　则n也认为是整数,从而将　0.999　…　999　的情况也排除了。　当n　0.999999999999999　则n就是整数,将-　0.999　…　999　的情况排除了。　注意:常量　0.99　…　99　的默认存储类型是　double　型,如果在末尾加　L　写成　0.99　…　99L　,则代表　long　double　型,　在VC　中long　double　型和　double　型没多少区别,所以一般不用它　(　GCC　中可以用)。同理整数末尾也可以加　L　,代表　long　int　,取值范围是正负　21　亿多(在32　位系统中　int　和long　[int]　都是占　4　个字节,取值范围也一样,所以一般　long　类型也不常用,　64　位系统中可以用),例如　212345678L　(　9　位数,　21　亿多)。　完整程序如下:　#include　#include　int　main()　{　double　n;　while(scanf("%lf",&n)==1)　{　if(n>=0)　if(　(n-(int)n)　　0.9999999999