Ruby 红宝石单精度数

Ruby 红宝石单精度数,ruby,numeric,floating-accuracy,Ruby,Numeric,Floating Accuracy,我正在尝试在Ruby中使用Windows上的COM组件,该组件需要单精度的数字 在C#中,我可以像这样将数字从双精度转换为单精度 float mynumber = (float)2.0 如何在Ruby中创建单精度浮点数?Ruby本身不支持单精度浮点数 您可以使用gem以不同的浮点格式进行计算/转换 但要将此gem创建的对象传递给COM对象,您必须以某种方式将其转换为预期的内存表示。Ruby只有一个float类,它是双精度的。我还没有在ruby中使用COM,但我希望接口能够自动将ruby fl

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

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

float mynumber =  (float)2.0

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

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

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


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

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

编辑1:

您可以使用pack方法将ruby浮点转换为二进制字符串,其中包含一个精度浮点:

尝试:


如何将数字传递给COM组件?在Ruby中,所有浮点数都以双精度存储。
[2.0].pack "f"