Преобразуйте 2 целых числа в число с плавающей запятой

#c# #integer #modbus

#c# #целое число #modbus

Вопрос:

Мне нужно преобразовать 2 целых числа в число с плавающей запятой. Я использую следующую функцию для выполнения этого преобразования:

 string hexString = value1   value2; uint num = uint.Parse(hexString, NumberStyles.AllowHexSpecifier);  byte[] floatVals = BitConverter.GetBytes(num); f = BitConverter.ToSingle(floatVals, 0);  

Функция работает нормально, за исключением случаев, когда второе целое число отрицательно. Что дает небольшую разницу в десятичной части.

Пример:

57.76 16998 и 16673: -gt; Правильно

57.54 16998 и -11174: -gt; Неверно (правильно: gt;57.71).

То, что я делаю, чтобы приблизиться к правильному числу, — это умножаю второе целое число на -1, чтобы сделать его положительным. Мой вопрос в том, как получить точное значение, когда второе целое число отрицательно?

Читая руководство, там написано:

введите описание изображения здесь

Скриншот моего приложения: введите описание изображения здесь

Комментарии:

1. Что такое value1 и value2 ? Как они соотносятся с 2 целыми числами?

2. Значение 1, 2, 3.. все они считываются. Но разные временные интервалы. «Считывает» — это считывание с устройства. я считываю показания счетчика мощности с помощью modbus.