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

use*_*285 5 c++ integer numbers comma

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

Dig*_*oss 8

没有一个简单的答案

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

f == floor(f)
Run Code Online (Sandbox Code Playgroud)

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

这可能是一种方式:

fabs(f - round(f)) < 0.000001
Run Code Online (Sandbox Code Playgroud)

虽然我们在这个主题上,但对于纯粹主义者来说,我们应该注意到int i = f;或者double i = f;将根据FPU模式进行入,而round(3)将使中途情况远离零.

  • @user2140285 - 小心。“几乎相等”是一种先进的技术。它违反了传递性(a 几乎等于 b,b 几乎等于 c 并不意味着 a 几乎等于 c),并且它可以掩盖稍后会困扰您的实际问题。 (3认同)