Ruby 单精度数

Ruby single precision number

提问人:Henrik 提问时间:11/17/2011 更新时间:11/18/2011 访问量:1125

问:

我正在尝试在 Ruby 的 Windows 上使用 COM 组件,该组件需要单精度数字。

在 C# 中,我能够像这样将数字从双精度转换为单精度。

float mynumber =  (float)2.0

如何在 Ruby 中创建单精度浮点数?

Ruby 数值 浮点精度

评论

2赞 Simon Perepelitsa 11/18/2011
如何将数字传递给 COM 组件?在 Ruby 中,所有浮点数都以双精度存储。

答:

1赞 undur_gongor 11/17/2011 #1

Ruby 本身不支持单精度浮点数。

您可以使用 gem float-formats 以不同的浮点格式进行计算/转换。

但是,要将此 gem 创建的对象传递给 COM 对象,必须以某种方式将其转换为预期的内存表示形式。

4赞 David Grayson 11/18/2011 #2

Ruby 只有一个浮点类,它是双精度的。我还没有在 ruby 中使用过 COM,但我希望接口能够自动将 ruby 浮点数转换为它需要的类型。您是否尝试过将普通的红宝石浮点传递给它?会发生什么?你能发布一些示例代码来演示这个问题吗?

编辑1:

可以使用 pack 方法将 ruby float 转换为内部具有单个精度浮点数的二进制字符串:

http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-pack

尝试:

[2.0].pack "f"