2011-11-17 25 views
3

Rubyでは、単精度で数値が必要なCOMコンポーネントをWindows上で使用しようとしています。Ruby単精度数

C#では、このように倍精度から単精度に数値をキャストすることができます。

float mynumber = (float)2.0 

Rubyで単精度浮動小数点数を作成するにはどうすればよいですか?

+2

どのように番号をCOMコンポーネントに渡しますか? Rubyでは、すべての浮動小数点は倍精度で格納されます。 –

答えて

4

Rubyには1つの浮動小数点クラスしかなく、倍精度です。私はCOMでRubyで作業していませんが、インターフェースが自動的にルビーフロートを必要なタイプに変換すると期待します。普通のルビーフロートを渡してみましたか?何が起こるのですか?問題を示すサンプルコードを投稿できますか?

EDIT 1:

あなたが内部の単精度浮動小数点数を持つバイナリ文字列にルビーのフロートを変換するためのパック方法を使用することができます。

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

試してみてください。

[2.0].pack "f" 
1

Ruby自体は単精度浮動小数点をサポートしていません。

gem float-formatsを使用して、さまざまな浮動形式で計算/変換を行うことができます。

しかし、この宝石によって作成されたオブジェクトをCOMオブジェクトに渡すためには、何らかの形で予想されるメモリ表現に変換する必要があります。