Рубиновое число с одинарной точностью - PullRequest
3 голосов
/ 17 ноября 2011

Я пытаюсь использовать COM-компонент в Windows в Ruby, который ожидает числа с одинарной точностью.

В C # я могу привести число от двойной к одинарной точности, как это.

float mynumber =  (float)2.0

Как создать число с плавающей запятой одинарной точности в Ruby?

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011

В Ruby есть только один класс с плавающей точкой, и это двойная точность. Я не работал с COM в ruby, но я ожидаю, что интерфейс автоматически преобразует плавающий ruby ​​в нужный ему тип. Вы пробовали просто передать ему обычный рубиновый поплавок? Что просходит? Можете ли вы опубликовать пример кода, демонстрирующего проблему?

РЕДАКТИРОВАТЬ 1:

Вы можете использовать метод pack для преобразования плавающего рубина в двоичную строку с плавающей точкой одинарной точности:

http://www.ruby -doc.org / ядро-1.9.3 / Array.html # метод-я-пакет

Попытка:

[2.0].pack "f"
1 голос
/ 17 ноября 2011

Ruby сам по себе не поддерживает плавающие с одинарной точностью.

Вы можете использовать gem float-format для выполнения расчетов / преобразования в различных форматах с плавающей точкой.Передав объект, созданный этим гемом, в COM-объект, вам придется каким-то образом преобразовать его в ожидаемое представление памяти.

...