Auratos 0 3 ноября, 2015 Опубликовано 3 ноября, 2015 · Жалоба Добрый день. У меня есть число типа float. Необходимо его записать в массив, дополнив целую и дробную части до определенного размера нулями. С целой частью проблем нет, дробную пока не получилось дополнить нулями. Но проблема в другом: sprintf отказывается принимать числа больше int. Подскажите, пожалуйста, как можно ли как-то обойти это ограничение? Может быть в настройках компилятора что-то включить? Среда разработки - MPLab X IDE. Вот пример кода, где я использую sprintf void main(void) { float minSet1 = 0.5; unsigned char Setting[11] = " "; NumbConverter(Setting, minSet1, 36); } void NumbConverter (void* destination, float numb, unsigned char numbDecimal) { unsigned char* array = (unsigned char*)destination; unsigned int whole; unsigned long decimal; whole = numb; // целая часть switch (numbDecimal) { case 36: decimal = (numb - whole) * 1000000; // дробная часть sprintf((char*)array, (const far rom char*)"%03d.%06u", whole, decimal); break; case 43: decimal = (numb - whole) * 1000; // дробная часть sprintf((char*)array, (const far rom char*)"%04d.%03u", whole, decimal); break; case 46: decimal = (numb - whole) * 1000000; // дробная часть sprintf((char*)array, (const far rom char*)"%04d.%06u", whole, decimal); break; } } На выходе я получаю массив Setting с содержимым "000.000007" вместо "000.500000". Не знаю, как быть Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 7 3 ноября, 2015 Опубликовано 3 ноября, 2015 · Жалоба для unsigned long нужно применять lu читать здесь эксперементировать здесь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Auratos 0 5 ноября, 2015 Опубликовано 5 ноября, 2015 · Жалоба megajohn, большое спасибо за помощь. До этого пробовал %u, %ul, но не работало Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 136 5 ноября, 2015 Опубликовано 5 ноября, 2015 · Жалоба читать здесь Из википедии может сложиться впечатление, что форматные строки printf и scanf одинаковые, потому что для scanf там рассмотрены самые примитивные случаи. На самом деле форматные строки существенно отличаются, поэтому читать лучше здесь. Дома попробую найти ссылку на еще более подробное описание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться