Номер единственной точности Ruby

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

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

float mynumber = (float)2.0

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

2 ответа

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

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

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

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

Try:

[2.0].pack "f"


Ruby сам не поддерживает одинарные прецизионные поплавки.

Вы можете использовать gem float-formats для выполнения вычислений/преобразования в разных форматах float.

Но для передачи объекта, созданного этим камнем, в COM-объект, вам придется каким-то образом преобразовать его в ожидаемое представление памяти.

licensed under cc by-sa 3.0 with attribution.