#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.