Господа, понадобилось мне разбить число float для вывода на сегментный индикатор (на целую и дробную части). Залез я в какой-то проект старый для STM32, где у меня это было реализовано - ан нет, не работает, библиотека math.h нужна.
А а ST Visual Development нету такой.
Попытался кормить ему тот файл, что в Keil - компилятор им подавился. Около сотни ошибок, подавляющее большинство из них - "not an argument"
Собственно вопросы - кто-нибудь пытался вставить библиотеки от KEIL в ST Visual Development?
Может в STVD есть свои математические функции?
Если нет, то как протыми средствами C разделить float на челую и дробную (до двух знаков) части?
Попробовал написать свою функцию, точностью до одного знака после запятой.
Код
void LCD_Show_Current(float current)
{
int int_num, decimal_num;
float decimal_part;
int_num=current;
decimal_part=current-int_num;
decimal_num=decimal_part*10;
}
Результат странный - decimal part почему-то всегда меньше на 0.1 (соответственно decimal_num меньше на единицу).
В функцию число поступает правильное (проверял уже внутри функции). А вот после decimal_part=current-int_num; получается недостача.
В упор не вижу, где я ошибся?
Тихо сам с собою - когда присваиваю переменной значение скажем 13.7, в отладчике оказывается, что переменная равна 13.69999998....
Что за самодеятельность контроллера?
Сообщение отредактировал zheka - Aug 11 2018, 08:45