代码之家  ›  专栏  ›  技术社区  ›  Agnel Kurian

遍历所有可能的浮点值

  •  5
  • Agnel Kurian  · 技术社区  · 14 年前

    如何列出浮点数据类型的所有可能值?我可以用C或C++的结合来做这件事,但是这是可移植的吗?

    在其他语言中如何做到这一点?Javascript?

    假设我使用这个迭代来映射 theta sin(theta)

    5 回复  |  直到 14 年前
        1
  •  2
  •   stacker    14 年前

    如何列出的所有可能值 浮点数据类型?

    通过一点点的旋转 IEEE-754 representation

    我假设您需要一个正弦函数的查找表,只需按所需精度的步长从0到2*PI循环即可。

        2
  •  6
  •   John Gordon    14 年前

    查看nextafter()和nextafter()的手册页。它们允许您从浮点数前进到下一个最接近的浮点数。您可以使用其中一个来按顺序访问每个FP编号。

        3
  •  1
  •   cHao    14 年前

    联合方法不太适合移植。这取决于你使用的任何类型的大小(如果sizeof(您的\u fp \u类型)>sizeof(您的\int \type),则即使您有时间,也无法迭代整个范围。)

    不管是哪种方式,都要意识到可能的浮点值并不是均匀分布在您选择的任何类型的范围内。当你离开0时,值之间的差异会变得更大。考虑到这一点,以及生成这样一个列表所需的时间,以及你甚至没有足够的HD空间来表示所有可能的double(我保证你没有!),更不用说RAM了……我不得不质疑创建这样一个列表的价值。查找该值所需的时间比只进行计算要长。

        4
  •  0
  •   MartinStettner    14 年前

    我想不出一个便携的方法来做这件事。但如果给定64位表示(标准IEEE双精度),并且假设生成一个值需要一纳秒,那么生成所有可能的值将需要500多年的时间。所以你有足够的时间考虑一个算法:)。。。

        5
  •  0
  •   Rob Hruska MegalomanINA    13 年前

    nextafter() ldexp() and frexp() 用于显式处理尾数和指数。