Ruby 单精度数
我正在尝试在 Windows 上使用 Ruby 中的 COM 组件,该组件需要单精度数字。
在 C# 中,我可以像这样将数字从双精度转换为单精度。
float mynumber = (float)2.0
如何在 Ruby 中创建单精度浮点数?
I am trying to use a COM component on Windows in Ruby which expects numbers in single precision.
In C# I am able to cast a number from double to single precision like this.
float mynumber = (float)2.0
How can I create a single precision floating point number in Ruby?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Ruby 只有一个 float 类,并且是双精度的。我没有在 ruby 中使用过 COM,但我希望该接口能够自动将 ruby float 转换为它需要的类型。您是否尝试过将普通的红宝石浮子传递给它?会发生什么?您可以发布一些示例代码来演示该问题吗?
编辑1:
您可以使用 pack 方法将 ruby 浮点数转换为内部包含单精度浮点数的二进制字符串:
http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-pack< /a>
尝试:
Ruby only has one float class and it is double precision. I haven't worked with COM in ruby, but I would expect the interface to automatically convert a ruby float to the type that it needs. Have you tried just passing a normal ruby float to it? What happens? Can you post some example code demonstrating the problem?
EDIT 1:
You can use the pack method to convert a ruby float to a binary string that has a single precision float inside:
http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-pack
Try:
Ruby 本身不支持单精度浮点数。
您可以使用 gem float-formats 进行不同浮点格式的计算/转换。
但是为了将这个 gem 创建的对象传递给 COM 对象,您必须以某种方式将其转换为预期的内存表示形式。
Ruby itself does not support single precision floats.
You can use the gem float-formats for doing calculations/conversion in different float formats.
But for handing an object created by this gem to a COM object you will have to convert it to the expected memory representation somehow.