Size: a a a

2020 November 21

s

sexst in Deus Volt!
Timur Kuanshkaliev
ранее натыкался как раз на подобный код и тогда не понял почему там такие кастыли, перевода float в char. Есть ли надежда обойтись без них?)
printf частенько сильно обрезано по функционалу форматирования для всякого embedded в угоду размеру.
Можно впилить полную, зависит от того, под что и в чём пишется. Но лучше костылить
источник

TK

Timur Kuanshkaliev in Deus Volt!
Maxim
Иногда либы урезаны
а где искать оригинал? или не катит
источник

TK

Timur Kuanshkaliev in Deus Volt!
Maxim
Иногда либы урезаны
ну в принципе это и подозревал, эхх)
источник

s

sexst in Deus Volt!
Timur Kuanshkaliev
а где искать оригинал? или не катит
Оно того с точки зрения занимаемого места не стоит. Будет куча мёртвого кода на флеше ради одного-двух выводов
источник

TK

Timur Kuanshkaliev in Deus Volt!
sexst
printf частенько сильно обрезано по функционалу форматирования для всякого embedded в угоду размеру.
Можно впилить полную, зависит от того, под что и в чём пишется. Но лучше костылить
понял, спасибо всем)
источник

M

Maxim in Deus Volt!
Timur Kuanshkaliev
а где искать оригинал? или не катит
Лучше (если ситуация позволяет) прям флоат бинарно и передать
источник

TK

Timur Kuanshkaliev in Deus Volt!
Maxim
Лучше (если ситуация позволяет) прям флоат бинарно и передать
о_О это как?
источник

M

Maxim in Deus Volt!
Timur Kuanshkaliev
о_О это как?
Ну 4 байта памяти напрямую
источник

s

sexst in Deus Volt!
Ещё лучше - не пользоваться float на микроконтроллерах вообще.  Насколько это возможно.
источник

TK

Timur Kuanshkaliev in Deus Volt!
sexst
Ещё лучше - не пользоваться float на микроконтроллерах вообще.  Насколько это возможно.
у меня есть FPU)
источник

TK

Timur Kuanshkaliev in Deus Volt!
Maxim
Ну 4 байта памяти напрямую
а ну мне нужно float, uin32_t, uint8_t, преобразовать в char или uint8_t и передать через ДМА в юарт
источник

s

sexst in Deus Volt!
Timur Kuanshkaliev
у меня есть FPU)
Я не только с точки зрения скорости, но и с точки зрения того, что
float a = 0.1
if (a == 0.1)
{
   //This code will never be executed. Badum-tsss!!!
}
источник

s

sexst in Deus Volt!
Подводные камни представления нецелочисленных величин в рантайме через плавающую точку они такие.
источник

U

Username in Deus Volt!
Timur Kuanshkaliev
ранее натыкался как раз на подобный код и тогда не понял почему там такие кастыли, перевода float в char. Есть ли надежда обойтись без них?)
если правильно понял вопрос, то тебе надо компилятору сказать -u _printf_float
источник

TK

Timur Kuanshkaliev in Deus Volt!
sexst
Я не только с точки зрения скорости, но и с точки зрения того, что
float a = 0.1
if (a == 0.1)
{
   //This code will never be executed. Badum-tsss!!!
}
афигеть, действительно подводный камень)
источник

Л

Леха in Deus Volt!
Timur Kuanshkaliev
Ребят, а что за подвох в использовании float а sprintf().
Я хочу перевести переменную float в массив char, а потом побайтно передать этот массив в юарт
float Var = 12.2;
sprintf(uart_TX, "%f%c" , Var, '\n');
НО у меня в массиве нулевой элемент равен 10 т.е  '\n'.
При этом если поменяю тип данных на float Var = 12, то все отлично работает. Проверял первый вариант в онлайн компиляторе и там все ровно работает с float. Получается что либа stdio.h для МК кривая?
Поставь спецификатор у sprintf "%.2lf%c"
источник

TK

Timur Kuanshkaliev in Deus Volt!
Username
если правильно понял вопрос, то тебе надо компилятору сказать -u _printf_float
можно поподробнее где указать или перед чем?
источник

TK

Timur Kuanshkaliev in Deus Volt!
Леха
Поставь спецификатор у sprintf "%.2lf%c"
сейчас попробую
источник

Л

Леха in Deus Volt!
Леха
Поставь спецификатор у sprintf "%.2lf%c"
Вместо 2 указать нужно желаемую точность, тобишь количество цифр после запятой
источник

s

sexst in Deus Volt!
Timur Kuanshkaliev
афигеть, действительно подводный камень)
Причём если скомпилировать с константами и простейшей оптимизацией кода:
if (0.1 == 0.1)
{
   //This code will allways be executed
}

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