-
- Что скажет армянское радио? SciFi(1 знак., Сегодня, 13:55, ссылка)
- Ну что сказать... только спасибо! - Лaгyнoв(Сегодня, 14:59)
- floatV = (float)intV / Делитель. Только 12345678 во float32
нормально не помещается, там меньше 8 значащих десятичных разрядов. - Anvar(Сегодня, 13:47)
- спасибо - Лaгyнoв(Сегодня, 14:00)
- Вопрос то в чём? Как преобразовать инт во флоат и обратно?
Элементарно, присваиванием переменной соответствующего типа. Если
вопрос о нормализации, то это делается во флоате. Делишь/умножаешь
на 10 в степени n. - =AlexD=(Сегодня, 13:46)
- спасибо, теперь понял. Делитель! Самое забавное из float в int я
давно делал уже путем умножения. Мог бы и догадаться. :-) - Лaгyнoв(Сегодня, 14:02)
- Вам надо взять за привычку разговаривать с ИИ. Раз уж мануалы у нас
тут читать не принято, хотя бы он что-нибудь расскажет :-) - SciFi(Сегодня, 14:11)
- боюсь я ваших ИИ :-) - Лaгyнoв(Сегодня, 15:01)
- Вам надо взять за привычку разговаривать с ИИ. Раз уж мануалы у нас
тут читать не принято, хотя бы он что-нибудь расскажет :-) - SciFi(Сегодня, 14:11)
- спасибо, теперь понял. Делитель! Самое забавное из float в int я
давно делал уже путем умножения. Мог бы и догадаться. :-) - Лaгyнoв(Сегодня, 14:02)
- Тебе хочется юзать ненормализованные (denormal/subnormal) float-ы.
Плохая идея. Но если хоцца ярких эротических впечатлений, то вроде
как никто особо не запрещает. В GCC/Clang можно поставить флаг
-fno-fast-math или убрать флаги
-ffast-math/-funsafe-math-optimizations (буквы в последнем как бы
намекают). Vit(236 знак., Сегодня, 13:35)
- к сожалению я привязан к неписаным стандартам. Объем у нас в литрах
или кубометрах. Масса в тоннах или килограммах и т.п. Там ниже я
привел картинки - как "положено" всё держать в регистрах Модбас. Со
мной спорить не будут конечно. Но снижается репутация и
конкурентоспособность. - Лaгyнoв(Сегодня, 13:39)
- Вы еще один момент учтите. Если внешняя система ведет суммирование
показаний расхода для целей журналирования, то при суммировании
очень больших и очень малых чисел нормализованный флоат может
давать весьма странные результаты ;-) Для точности лучше
суммировать целые числа. - reZident(Сегодня, 14:00)
- ну это проблемы той внешней стороны, что захотела видеть мой пульт
набором регистров Модбас. :-) К тому же в моем суммарнике всё
складывается целочисленно и его я им показываю. - Лaгyнoв(Сегодня, 15:04)
- Дык когда сумма локальная не будет биться с суммой удаленной, то
претензии все равно будут к программисту :-) - reZident(Сегодня, 15:08)
- буду переживать проблемы в порядке поступления - Лaгyнoв(Сегодня, 16:30)
- Дык когда сумма локальная не будет биться с суммой удаленной, то
претензии все равно будут к программисту :-) - reZident(Сегодня, 15:08)
- ну это проблемы той внешней стороны, что захотела видеть мой пульт
набором регистров Модбас. :-) К тому же в моем суммарнике всё
складывается целочисленно и его я им показываю. - Лaгyнoв(Сегодня, 15:04)
- Вы еще один момент учтите. Если внешняя система ведет суммирование
показаний расхода для целей журналирования, то при суммировании
очень больших и очень малых чисел нормализованный флоат может
давать весьма странные результаты ;-) Для точности лучше
суммировать целые числа. - reZident(Сегодня, 14:00)
- к сожалению я привязан к неписаным стандартам. Объем у нас в литрах
или кубометрах. Масса в тоннах или килограммах и т.п. Там ниже я
привел картинки - как "положено" всё держать в регистрах Модбас. Со
мной спорить не будут конечно. Но снижается репутация и
конкурентоспособность. - Лaгyнoв(Сегодня, 13:39)
- Я не программист, но даже у меня возникает вопрос: зачем
целочисленное значение преобразовывать в плавучку для передачи по
протоколу, не приспособленному для передачи плавучки, чтобы потом
... опять преобразовать в целочисленное? - reZident(Сегодня, 12:31, +1)
- Чтобы соответствовать общепринятым нормам в наших кругах. Вот к
примеру регистры Модбас у фирмы Сенсор. Каждый регистр и передается
побайтно в Модбасе Лaгyнoв(1 знак., Сегодня, 13:14, картинка)
- Ваша проблема немного надумана. Перевод целочисленных значений в
плавучку (при необходимости) должен быть функцией SCADA-системы,
которая опрашивает modbus-регистры вашего прибора. - reZident(Сегодня, 13:51)
- Проще у себя байты перетасовать в нужном порядке чем потом каждому SCADA-программеру всю эту науку о байтах снова и снова разъяснять. - ЫЫyкпy(Сегодня, 21:11)
- Я о том, что только для передачи нет смысла целочисленные значения преобразовывать в плывучку. Упаковать их в два регистра и дело с концом. Плывучка имеет смысл во время преобразования (масштабирования) величин для удобного отображения циферок пользователю. А отображение обычно на стороне SCADA идет. - reZident(Сегодня, 22:25)
- Проще у себя байты перетасовать в нужном порядке чем потом каждому SCADA-программеру всю эту науку о байтах снова и снова разъяснять. - ЫЫyкпy(Сегодня, 21:11)
- Если соответствовать "общепринятым нормам" именно в этих кругах, то
в 9 из 10 устройств тупо, в отдельном регистре, передают положение
decimal point. Решение уродливое, что не мешает ему быть
"общепринятым". - Tahoe3D(Сегодня, 13:19,
)
- вот именно, что тупо и уродливо. Я б с удовольствием в int16 всё
клал. Но надо так, как на картинке. И у нас так живут 10 из 10. Вот
еще пример счетчик-расходомер ЭМИС. Тоже float32. И вдруг тут я
вылезаю такой оригинальный. :-) Лaгyнoв(2 знак., Сегодня, 13:27, картинка)
- Самое смешное во всей этой стандартизации то, что в так называемых стандартах Модбаса нет ни слова о том как передавать данные размером больше 16 бит. Единственное разумное решение в такой ситуации - сохранять совместимость с уже имеющимся оборудованием. Первые контроллеры Модикон с которых всё начиналось были big-endian. О таких высоких материях как порядок следования байт программисты этих контроллеров не задумывались, просто читали/писали байты в том порядке как они ЫЫyкпy(522 знак., Сегодня, 20:52)
- вот именно, что тупо и уродливо. Я б с удовольствием в int16 всё
клал. Но надо так, как на картинке. И у нас так живут 10 из 10. Вот
еще пример счетчик-расходомер ЭМИС. Тоже float32. И вдруг тут я
вылезаю такой оригинальный. :-) Лaгyнoв(2 знак., Сегодня, 13:27, картинка)
- Ваша проблема немного надумана. Перевод целочисленных значений в
плавучку (при необходимости) должен быть функцией SCADA-системы,
которая опрашивает modbus-регистры вашего прибора. - reZident(Сегодня, 13:51)
- Чтобы соответствовать общепринятым нормам в наших кругах. Вот к
примеру регистры Модбас у фирмы Сенсор. Каждый регистр и передается
побайтно в Модбасе Лaгyнoв(1 знак., Сегодня, 13:14, картинка)
- Что скажет армянское радио? SciFi(1 знак., Сегодня, 13:55, ссылка)