【发布时间】:2011-08-13 09:50:21
【问题描述】:
如何检查float 变量是否包含整数值?到目前为止,我一直在使用:
float f = 4.5886;
if (f-(int)f == 0)
printf("yes\n");
else printf("no\n");
但我想知道是否有更好的解决方案,或者这个解决方案是否有任何(或许多)缺点。
【问题讨论】:
-
当数字大于最大允许整数值时,您的方法将失败。
-
查看我的答案以解决 OP 方法的问题。
-
当然正确的答案是:你问错问题了。
-
@John Marshall:那么,正确的问题是什么?
-
嗯,你想做什么?如果您将值存储在
float中,可能是因为您想对其进行浮点运算。那么你的问题就变成了:这个变量,其值在特定领域的方式和取决于你做算术的仔细程度有些蓬松,是否有一个蓬松的积分?要有意义地回答这个问题,您需要考虑特定领域的蓬松度。或者,换一种说法:在这种情况下,正确的方法不是将您的值存储在适当大小的int中是什么情况?
标签: c floating-point int