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

nikolz

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

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

nikolz

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