回 帖 发 新 帖 刷新版面

主题:如何判断一个整型数是否有小数位?

请问如何判断一个整型数是否有小数位?

回复列表 (共12个回复)

沙发

“整型”的意思就包括“没有小数位”这一条。

板凳

同上……

3 楼

我晕,不好意思说错了,应该是问“如何判断一个实型数是否有小数位”

4 楼

这样吧

Code in C/C++:

if (x - (float)((int)x) == 0.0)
// 没有小数位
else
// 有小数位

5 楼

“整型”的意思就包括“没有小数位”这一条。
而“浮点型”的意思就包括“有小数位”这一条。
计算机中即使是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 楼

如果是在TP下呢?

7 楼

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 楼

这个。。。可能会有精度误差
应该取abs(a-b)<=某个允许的误差范围吧

9 楼

自己等于自己啊
为什么不试试这样呢?
x=a;
if(int(a)==x)
no
else
have

10 楼

[em1]整型数那会有小数位吗。小样我建意到QBASIC课本上去看一看啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册