У меня есть два целых числа. Целые числа: 2206,41247Преобразование в плавучую точку
Я хочу преобразовать, чтобы поплавать с этими целыми числами. Для этого;
void Main()
{
GetSingle(2206,41247).Dump();
}
public static float GetSingle(ushort highOrderValue, ushort lowOrderValue)
{
return BitConverter.ToSingle(BitConverter.GetBytes(lowOrderValue).Concat(BitConverter.GetBytes(highOrderValue)).ToArray(), 0);
}
Я закодировал что-то в Linqpad. Это функции результат является 9,547158E-34
Но в Modbus Poll программа преобразует это целые числа.
Я читаю эти целые числа с удаленного устройства с протоколом Modbus. Правильное значение
Мой вопрос; Как программа опроса Modbus преобразует эти целые числа в float? Как значение может быть равно нулю?
Любая идея?
Невозможно, чтобы байты из этих двух целых чисел представляли 0, если они были байтами из поплавка. Ноль-поплавок состоит из байтов, которые все равны 0. Например. попробуйте 'Console.WriteLine (string.Join (", ", BitConverter.GetBytes ((float) 0)));' –
Да, вы правы. Все двоичные файлы должны быть равны нулю в плавающем числе для нуля. Но как это может произойти? В опросе Modbus конвертирует эти целые числа в нуль. – Stormcloak
Это очень маленький, я думаю, что modbus должен округлять. Если модовая шина показывает до 5, даже 30 десятичных знаков, это будет отображаться как ноль. – weston