• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Научите считать float

nikolz

Well-known member
Чтобы определить "половину младшего разряда точности" одним сложением не обойдешься.
Очевидно Вы не поняли.
В вашей программе Вы фактически написали округление для последовательного вычислителя
т е на одну десятичную цифру с переносом сигнала переполнения
Это конечно замечательно что Вы знаете как работал калькулятор
--------------------------------------------------
у Вас вот это int n = ((int)(fract*10.0+0.5))/10.0;
выполняется в цикле
т е в худшем случае количество этих умножений делений сложений и преобразований равно числу цифр после точки.
т е цифра за цифрой.
------------------------------------------------
но прикольно то,
что ESP 32 разрядный
и нет смысла для округления моделировать 4-разрядный калькулятор прошлого века.
-------------------------------------------------------
Если серьезно,то нет смысла засовывать округление в функцию преобразования числа в строку.
----------------------------------
Т е округление и преобразование в строку - это две независимые операции которые реализуются разными функциями.
---------------------------
Преобразовывать в строку можете чем угодно.
----------------------------------------------
А округление делается прибавлением к числу величины равной половине младшего разряда отображаемых после точки знаков.
---------------------------------------------
Т е для округление надо всего ОДНО сложение перед вызовом функции преобразования.
----------------------------------------
Пример я уже нарисовал выше.
 
В вашей программе Вы фактически написали округление для последовательного вычислителя
т е на одну десятичную цифру с переносом сигнала переполнения

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

nikolz

Well-known member
Да, разумеется можно и разными, или одной, смотря что нужно.
очевидно Вы не поняли.
Если нужно округление, то оно делается одним сложением -т е никакой функции не требуется,
а если нужно моделирование работы сложения многоразрядных десятичных чисел на одноразрядном сумматоре - то будет ваша функция.
Поэтому для преобразования вещественного числа в строку ваше ноу-хау не имеет смысла.
 
очевидно Вы не поняли.
Если нужно округление, то оно делается одним сложением -т е никакой функции не требуется,
а если нужно моделирование работы сложения многоразрядных десятичных чисел на одноразрядном сумматоре - то будет ваша функция.
Поэтому для преобразования вещественного числа в строку ваше ноу-хау не имеет смысла.
Какое там ноу хау... Вы предлагаете слагаемое для этого сложения вручную считать?
 
Сверху Снизу