如何检查浮点数是否为整数?

时间:2013-03-09 17:36:59

标签: c++ numbers integer comma

printf函数有一些函数,你可以使用%g,如果float是3.00,它将显示整数3如果它实际上是一个浮点数将显示3.01 ,有什么方法可以通过一些代码来做到这一点吗?

2 个答案:

答案 0 :(得分:8)

没有一个简单的答案

积分值确实具有float和double格式的精确表示。所以,如果它真的已经是不可或缺的,你可以使用:

f == floor(f)

但是,如果你的值是计算的结果,在某一点上涉及任何类型的非零小数部分,那么你需要担心的是你可能有一个非常接近整数但不是真的,确切地说,最后一点是相同的。你可能想要认为这是不可或缺的。

可以这样做的一种方式:

fabs(f - round(f)) < 0.000001

虽然我们谈论的是主题,但对于纯粹主义者,我们应该注意int i = f;double i = f;将根据FPU模式进行舍入,而round(3)将围绕中途情况从零开始。

答案 1 :(得分:0)

尝试双modf(double,double *)函数。 [http://www.codecogs.com/reference/computing/c/math.h/modf.php] [1]