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