根据医生们的说法,Ruby是一个“使用本机架构的双精度浮点表示的不精确实数”。
这是否意味着在32位Ruby上,它们等同于C float,在64位Ruby上等效于C double
如果是,我如何在运行时找到程序运行在哪个Ruby上(准确地说,是多少位)?它应该适用于任何操作系统和任何ruby实现(mri、rubinius和jruby)。
我想出的解决办法是:
def architecture_bits
1.size * 8
end这在任何情况下都有效吗?有没有更好/更优雅的方法?
发布于 2014-11-08 08:41:36
单/双精度浮动的大小与您是否正在运行ruby的64/32位实现无关,因此您的实现将在ruby的任何32位实现上返回错误的答案。
浮点数定义了常量,如Float::MANT_DIG和Float::MAX_EXP,您可以从它们导出浮点数所使用的存储量。如果不是ieee 754的双精度(53位尾数(其中52位是存储的),1位符号,11位指数),这将是非常罕见的。
https://stackoverflow.com/questions/26815203
复制相似问题