5

printf 函数有某种函数,您可以在其中使用 %g,3如果浮点数为 3.00,它将显示整数并显示3.01它是否实际上是浮点数,有什么方法可以通过一些代码来做到这一点?

4

1 回答 1

8

真的没有一个简单的答案

整数值确实具有浮点和双精度格式的精确表示。所以,如果它真的已经是不可或缺的,你可以使用:

f == floor(f)

但是,如果您的值是计算的结果,该计算在某一时刻涉及任何类型的非零小数部分,那么您将需要担心您可能有一些非常接近整数的东西,但实际上并不完全正确, 到最后一位相同。您可能希望将其视为不可分割的。

一种可以做到这一点的方法:

fabs(f - round(f)) < 0.000001

当我们讨论这个主题时,对于纯粹主义者来说,我们应该注意int i = f;ordouble i = f;将根据 FPU 模式进行舍入,而round(3)将舍入远离零的中途情况。

于 2013-03-09T17:40:59.500 回答