是否有浮点无穷小?

时间:2019-02-01 17:57:09

标签: c floating-point

由于浮点数有限,而且每个浮点数都可以比较(我认为),所以必须始终存在一个数字'b',

  1. 小于给定数字“ a”(不是+/-无穷大)和
  2. 不存在编号 'c' 的比 'A' 较小的和比 'B' 更大;

即“下一个”较小的浮点数。我想知道是否:

  1. 有一个函数较小的在C程序设计语言
  2. (浮起)返还这类号码B(或更大(浮起)的这个问题)
  3. 如果不是,那么是否有办法为某些类型的数字“ a”获得这些“下一个”数字,例如,如果“ a”是整数/零。

尝试

float smaller(float a) return a - 0.00...001f;

我看来,像一个黑客,可能并不适用于所有可能的输入,但我可能是错的,所以这就是为什么我转向你们。感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

确实存在。您正在使用“下一代”功能系列。

这些可用于从一个浮点数移至下一个浮点数,其方式与您可以对整数类型使用++--相同。

请参见https://en.cppreference.com/w/c/numeric/math/nextafter

(这是C文档)。

答案 1 :(得分:5)

The C99/POSIX functions nextafter/nexttoward可以做到这一点。您提供一个起始值x和一个目标值y,它们会从起始位置向目标方向返回下一个值。