根据文档,Ruby Float是“使用本机体系结构的双精度浮点表示法的实数实数”。
这是否意味着在32位Ruby上它们等效于C,float
而在64位Ruby上等效于C double
?
如果是,如何在运行时找出程序在哪个Ruby上运行(准确地说是多少位)?它可以在任何OS和任何Ruby实现(mri ruby,rubinius和jruby)上运行。
我想出的解决方案:
def architecture_bits
1.size * 8
end
在所有情况下都行得通吗?有没有更好/更优雅的方法?
单精度/双精度浮点数的大小与您是否正在运行ruby的64/32位实现无关,因此您的实现将在任何32位ruby实现上返回错误的答案。
浮点数定义常量,例如Float::MANT_DIG
和Float::MAX_EXP
,您可以从中得出浮点数使用的存储量。但是,它不是ieee 754双精度的(这是53位尾数(其中存储了52位),1位符号,11位指数),这是非常罕见的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句