主题:如何判断一个整型数是否有小数位?
XVenus
[专家分:20] 发布于 2005-05-19 00:39:00
请问如何判断一个整型数是否有小数位?
回复列表 (共12个回复)
沙发
eastcowboy [专家分:25370] 发布于 2005-05-19 12:29:00
“整型”的意思就包括“没有小数位”这一条。
板凳
faintzw [专家分:2660] 发布于 2005-05-19 12:42:00
同上……
3 楼
XVenus [专家分:20] 发布于 2005-05-19 18:03:00
我晕,不好意思说错了,应该是问“如何判断一个实型数是否有小数位”
4 楼
davidw017 [专家分:4170] 发布于 2005-05-19 18:14:00
这样吧
Code in C/C++:
if (x - (float)((int)x) == 0.0)
// 没有小数位
else
// 有小数位
5 楼
eastcowboy [专家分:25370] 发布于 2005-05-19 18:39:00
“整型”的意思就包括“没有小数位”这一条。
而“浮点型”的意思就包括“有小数位”这一条。
计算机中即使是0.0,也不是绝对等于零的,所以总有小数。
如果硬要把十分接近整数的浮点数说成没有小数位,在C中可以通过以下代码实现:
if( abs(x-(int)x)<0.0001 || abs(x-(int)(x+1))<0.0001 )
//与最接近的整数相差不超过0.0001,即:可以认为是整数
else
//与最接近的整数相差较大
顺便说说,楼上的代码并不一定可以满足要求。试试下面的代码:
a=1.500001 + 2.5 - 4.000001
if(a==0.0)printf("ABC\n");
else printf("abc\n");
TC上运行结果是输出abc
6 楼
XVenus [专家分:20] 发布于 2005-05-19 21:27:00
如果是在TP下呢?
7 楼
davidw017 [专家分:4170] 发布于 2005-05-19 21:35:00
Code in Free Pascal:
function is_integer(x: real): boolean;
begin
if (x = trunc(x)) then is_integer := true
else is_integer := false;
end;
{以上代码在 fp 中通过,但是 tp 不清楚}
8 楼
faintzw [专家分:2660] 发布于 2005-05-19 21:52:00
这个。。。可能会有精度误差
应该取abs(a-b)<=某个允许的误差范围吧
9 楼
liyu355 [专家分:980] 发布于 2005-06-05 16:10:00
自己等于自己啊
为什么不试试这样呢?
x=a;
if(int(a)==x)
no
else
have
10 楼
zhouling90 [专家分:40] 发布于 2005-06-16 13:51:00
[em1]整型数那会有小数位吗。小样我建意到QBASIC课本上去看一看啊
我来回复