注册 登录
编程论坛 C++教室

[求助]如何判断一个数是整数?

solu 发布于 2007-08-10 06:43, 3155 次点击
例如有这样一个数学式子:Z=(L-x+y)/(n-m);
其中L,x,y,n,m都是整数,那么如何判断Z是不是整数?
13 回复
#2
blueboy820062007-08-10 08:56
想了一下,
可以这样:
if(Z-int(Z)==0)
当然,像2.00这样的,我就不会了!

但是,既然L,x,y,n,m都是整数了,如果你声明了Z为整型,Z不就一定是整数吗?
就算声明为浮点型,也不会出现2.00 这样的情况吧
-----------------------------------------------------------------------------
我的水平有限,还请高手指点啊……

#3
野比2007-08-10 13:23
为啥你不用z=int(z)判断呢? 看起来也直观些..
#4
buptlankai2007-08-10 13:43
回复:(野比)为啥你不用z=int(z)判断呢? 看起来也直...

是z==int(z)吧~~^_^

#5
野比2007-08-10 14:23
哦..写错了..
这几天同时编VB和C的程序都有些乱了...
#6
leeco2007-08-10 15:15
回复:(buptlankai)回复:(野比)为啥你不用z=int(...
浮点数有精度丢失的问题,不能这么判,整数集是成环的,也就是说对加减乘都是封闭的,所以只要在除法的时候用%判断是否能整除即可。
#7
blueboy820062007-08-10 16:33
所以只要在除法的时候用%判断是否能整除即可。

问题是不整除又怎么样呢?
系统不一样会隐式强制转化使Z为整数??

#8
福尔摩斯2007-08-10 17:03
以下是引用solu在2007-8-10 6:43:11的发言:
例如有这样一个数学式子:Z=(L-x+y)/(n-m);
其中L,x,y,n,m都是整数,那么如何判断Z是不是整数?

整型/整型=整型

所以结果Z一定是整型,不需要判断

但是如果你想判断的话可以这样

Z=(L-x+y)/(n-m);

temp=(L-x+y)/ (float)(n-m);

这个时候只要判断 (temp>Z)? 就可以了

#9
leeco2007-08-10 17:35
回复:(blueboy82006)所以只要在除法的时候用%判断是...
这显然不是他的问题想要的结果嘛
#10
aipb20072007-08-10 21:22

就楼主那个式子,确实毫无疑问z是整数。

我也不明白浮点数比较大小之类的,谁可以讲解一下?

#11
福尔摩斯2007-08-10 21:40
以下是引用aipb2007在2007-8-10 21:22:21的发言:

就楼主那个式子,确实毫无疑问z是整数。

我也不明白浮点数比较大小之类的,谁可以讲解一下?

注意看我的前边的帖子

比如:3/2=1;3/2.0=1.5;

显然 1.5>1

#12
aipb20072007-08-10 22:50
以下是引用福尔摩斯在2007-8-10 21:40:52的发言:

注意看我的前边的帖子

比如:3/2=1;3/2.0=1.5;

显然 1.5>1

你说的我明白。
我是说,两个浮点数直接像整数这样比较有风险吧,我看了网上好几种方法比较两个浮点数。
我不明白什么情况下会出现直接比较带来的风险,我记得有次遇到过,现在怎么想也想不起,自己测试也都遇不到。

#13
野比2007-08-11 00:48

按位比较..

#14
未完成交响曲2007-08-12 14:57

这个问题可以反过来想,
只要 (n-m)*Z == L-x+y 就可以了。
注意:整型/整型=整型,所以Z是不是整型没有关系。

1