Перейти к содержанию
    

Редактирование значения типа float

минусы:

- назовите сами :)

 

Да не переживайте так, нету минусов :) Вообще, выкладывать юзеру параметры в плавучке - это не есть хорошо. Значит, что-то в консерватории не так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

минусы:

- назовите сами :)

Сам так делал, еще на асме и на 74 пике :) У меня была структура "параметры редактирования", которая включала в себя:

- количество знакомест при редактировании

- количество знаков после запятой (если 0 - точка не выводится)

- знаковое/беззнаковое число

- минимальное и максимальное допустимое значение. Если при сохранении число выходит за диапазон - сохранение не происходит, выдается злобный сигнал, число заменяется максимумом или минимумом, пользователю предлагается продолжить редактирование.

 

Функции передавался указатель на число и указатель на такую структуру. Таким образом одна процедура использовалась для редактирования самых разнообразных параметров. Недостаток только один - этот метод не подходит, если положение точки не фиксировано. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Функции передавался указатель на число и указатель на такую структуру. Таким образом одна процедура использовалась для редактирования самых разнообразных параметров. Недостаток только один - этот метод не подходит, если положение точки не фиксировано. 

+1

То же самое плюс флаг read_only, селектор источника, откуда берется число (SRAM/EEPROM/FLASH/SPECIAL)

SPECIAL - в этом случае будет указатель на функцию, возвращающую требуемое число

В особо извращенных случаях добавлялись хинтовые строки для выдачи в UART, что это за параметр еще и на двух языках: английском и матерном родном. :) Ужас

У человека в цеху несколько необслуживаемых железяк, а пульт программирования один - подошел, воткнулся, исправил, выткнулся - продолжение работы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А когда редактируешь строку и потом переводишь в флоат разьве точность не теряется ?

Даже если она и "теряется", но лишь единожды, а у Вас на каждое нажатие кнопки.

По моему скромному мнению, при помощи atof достигается максимальная точность из возможных...

И уж не хуже чем при целочисленном способе редактирования. В этом смысле Ваш вариант самый неудачный.

atof - ведь библиотечная функция и отшлифована она не одним поколением программистов, поэтому недоверия у меня она никогда не вызывает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Даже если она и "теряется", но лишь единожды, а у Вас на каждое нажатие кнопки.

По моему скромному мнению, при помощи atof достигается максимальная точность из возможных...

И уж не хуже чем при целочисленном способе редактирования. В этом смысле Ваш вариант самый неудачный.

atof - ведь библиотечная функция и отшлифована она не одним поколением программистов, поэтому недоверия у меня она никогда не вызывает.

Ну давайте рассмотрим такой пример на Вашем алгоритме:

Было число 1.44999999

Выводим с одним разрядом после запятой: 1.4

хотим уменьшить это число на 1 минимальный шаг(типа чего-нить регулируем)

жмем кнопку вниз на младшем разряде

получаем: 1.3

жмем ввод

ИТОГО: было 1.44999999 стало 1.3

вместо регулирования на 0.1 получили на 0.14999999

 

Это правильно ? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну давайте рассмотрим такой пример на Вашем алгоритме:

Было число 1.44999999

Выводим с одним разрядом после запятой: 1.4

хотим уменьшить это число на 1 минимальный шаг(типа чего-нить регулируем)

жмем кнопку вниз на младшем разряде

получаем: 1.3

жмем ввод

ИТОГО: было 1.44999999 стало 1.3

вместо регулирования на 0.1 получили на 0.14999999

 

Это правильно ? :)

это неправильно. однако, если только один знак после запятой в редактируемом параметре - откуда там возьмется "хвостик"? редактируется, как я понимаю, входной параметр для некоего алгоритма, но никак не выходной, т.е. получаемый в результате вычислений... то есть никакого 1.449999 быть не может (не должно по определению)? может быть только 1.4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это неправильно. однако, если только один знак после запятой в редактируемом параметре - откуда там возьмется "хвостик"? редактируется, как я понимаю, входной параметр для некоего алгоритма, но никак не выходной, т.е. получаемый в результате вычислений... то есть никакого 1.449999 быть не может (не должно по определению)? может быть только 1.4
Ну а если этот пареметр рассчетный(например через деление) ? и его результат получается совсем в другом месте ?

А потом нужно его подредактировать?

 

На самом деле эти споры насчет округлений можно вести до бесконечности,

ИМХО, правда заключается в единичке младшего разряда который Вы позволили редактировать,

+- эта 1 это и есть точность...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чтоб не спорить, должно быть правило: система параметров прибора должна быть квадратно-гнездовой как и голова воображаемого пользователя. И если на юзера падают результаты промежуточных вычислений, то это не хорошо.

ЗЫ Есть исключение, например, когда параметр движется по экспоненте от точки А до точки В. Но юзеру совсем не обязательно сие редактировать по циферкам - шаг приращения должен выбираться автоматически, чтобы создать некоторое подобие слайдера или иного регулятора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чтоб не спорить, должно быть правило: система параметров прибора должна быть квадратно-гнездовой как и голова воображаемого пользователя. И если на юзера падают результаты промежуточных вычислений, то это не хорошо.
Ok, только никуда пока не уходите, :)

будете связующим звеном между пультом который получает значения

по модбас их редактирует и отправляет их обратно(или в другой модуль :) ),

боюсь без Вашей помощи они квадратно-гнездовым не договорятся...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ok, только никуда пока не уходите, :)

В таком случае пульт будет не устройство, а должность :)

 

И думаю, что в конце концов у пользователя такого пульта может возникнуть сильная  жажда сервиса. Вплоть до денег за работу по модернизации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В таком случае пульт будет не устройство, а должность :)

И думаю, что в конце концов у пользователя такого пульта может возникнуть сильная  жажда сервиса. Вплоть до денег за работу по модернизации.

Это еще почему ?

получили извне флоат

отредактировали

отправили назад

 

почему мой вариант будет хуже чем:

>ИТОГО: было 1.44999999 стало 1.3

>вместо регулирования на 0.1 получили на 0.14999999

 

?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

получили извне флоат

отредактировали

отправили назад

Отредактировали калькулятороподобной клавой - вааще вопросов нету. А 2/4/6 кнопок... фрагмент не вписывается в Геракла (ЦЕ)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отредактировали калькулятороподобной клавой - вааще вопросов нету. А 2/4/6 кнопок... фрагмент не вписывается в Геракла (ЦЕ)

-4 кнопки

-5 семисегментников(+точка) разрядов (но можно сколько надо)

-вывод/ввод целых/флоат

-ввод/контроль пароля на определенные параметры

-режим ввода по приращениям не совпадающим с разрядом

-режим задания значений по умолчанию

все редактируемые параметры удаленные, через модбас

(ЦЕ)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отредактировали калькулятороподобной клавой - вааще вопросов нету. А 2/4/6 кнопок... фрагмент не вписывается в Геракла (ЦЕ)
+5!

и нечего голову всем морочить! редактируйте в символьном виде с клавы типа PS/2 и будет вам счастье :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

+5!

и нечего голову всем морочить! редактируйте в символьном виде с клавы типа PS/2 и будет вам счастье :)

Да была бы вообще тема!!!

 

А редактирование делать примерно так:

 

Это конечно упрощенно, но идея я думаю ясна.

Вот такое решение вообще офигенно! Суперрррррр!..........

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...