2011-11-17 35 views
3

我想在Ruby中使用Windows中的COM組件,它需要單精度數字。Ruby單精度數

在C#中,我可以像這樣從雙精度到單精度。

float mynumber = (float)2.0 

如何在Ruby中創建單精度浮點數?

+2

如何將數字傳遞給COM組件?在Ruby中,所有的浮點數都以雙精度存儲。 –

回答

4

Ruby只有一個浮點類,它是雙精度的。我沒有在ruby中使用COM,但我期望接口能夠自動將ruby float轉換爲它需要的類型。你有沒有嘗試過只傳遞一個普通的ruby float?怎麼了?你能發表一些示例代碼來證明問題嗎?

編輯1:

您可以使用包法紅寶石浮點轉換爲具有內單精度浮點數二進制字符串:

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

嘗試:

[2.0].pack "f" 
1

Ruby本身不支持單精度浮點數。

您可以使用gem float-formats進行不同浮點格式的計算/轉換。

但是,爲了將由此gem創建的對象交給COM對象,您必須以某種方式將其轉換爲預期的內存表示形式。