Ruby 单精度数

发布于 2024-12-16 17:04:12 字数 171 浏览 0 评论 0原文

我正在尝试在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我们只是彼此的过ke 2024-12-23 17:04:12

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

编辑1:

您可以使用 pack 方法将 ruby​​ 浮点数转换为内部包含单精度浮点数的二进制字符串:

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

尝试:

[2.0].pack "f"

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:

[2.0].pack "f"
多彩岁月 2024-12-23 17:04:12

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文