, в формат .csv естественно разделитель у флоата при использовании snprintf - точка, но чтобы exel, коим я открываю итоговые файлы, воспринимал записанные числа с плавающей точкой за числа, а не за текст, необходим разделитель в виде запятой.
Как один из вариантов, думаю использовать оболочку для snprintf которая будет искать точки и менять на запятые. Но что-то меня гложет и есть ощущение, что есть варианты и по лучше, может кто подскажет, ещё пару вариантов, как можно выйти из положения?
Это все можно настроить в локали
Эксель может понимать и точку, и запятую.
Казалось да, но что-то идёт не так, и если я не разобрался за 15-20 мин, то и люди кто будут прибор использовать тоже могут начать тупить, но да ещё посмотрю что можно с настройками сделать, спасибо!
Лучший вариант - не использовать "exel"
sprintf(buf, "%d,%u", (int)myfloat, (long)(myfloat*1000)%1000);
Радикально, но нужно что-то доступное, всем знакомое
А если у вас inf или nan?
региоальые настройки на компе поменяйте на точку
А если у пользователя нет таких прав?
а если пользователь альтернативно развитый, то тоже нужно учесть?
Это под макось надо решение тоже?
под vxworks блин. нет, обычно проблема не в макоси, а в прокладке между stdin и мозжечком.
Юзеру графики строить надо?
excel довольно универсальная штука: 1) можно поменять в нем настройки чтобы десятичный разделитель был запятая; 2) можно написать формулу, которая заменит точки на запятые и выдаст число. 3)можно написать макрос на VBA. если у вас трудности с экселью - пишите в личку, помогу
Да, может понадобится, чтобы нагляднее были числа, не хочу лишать его такой возможности)
в экселе поставить нормальную локаль
а у других людей будет точка. и что им, другую версию прибора покупать?
заказывать платную опцию «точка»
он знаком не всем. не у всех есть винда. он, кстати, денег стоит. да по большому счету никто с ним не знаком (начниая с тебя, да)
Обсуждают сегодня