-
- Я так и делаю, но почему он сам не может? "%.3f" есть, а "%.3d"
нету... - Idler(27.01.2026 19:47)
- Ты главное в коде не заметил, это * и width. А %.3d нет по
очевидной причине, у "d" отсутствует дробная часть. - Tahoe3A(27.01.2026 20:40,
)
- Ну это только проблему с заменой нулей на пробелы помогает решить.
У меня на весь проект единственный раз понадобилось, обошел. А вот
"искусственная" дробная часть - в 90% случаев. Или хранить всё в
плавучке - память позволяет, или каждый раз делить при выводе. И
ещё - width задаёт минимальную длину. А в моих самописных функциях
- максимальную, и если число не лезет, оно заменяется на ####. А
лид.пробелы делаются установкой lead_zero=2 (1-нули, 0-ничего). - Idler(27.01.2026 21:11 - 21:20)
- А это единственная серьезная проблема. Все остальные, от
непонимания. Нет никакой "искусственной" дробной части. Нужна
дробная часть - есть float. Нужна дробная часть в рамках
целочисленных инструкций - бери Q-формат. Лишь бы собственные
нестандартные printf не изобретал. - Tahoe3A(27.01.2026 21:16,
)
- Ещё во времена ЕС-эвм мы писали "FORMAT +##.###" для вывода вполне
себе целочисленного числа. Это моё личное дело, как хранить число,
и как его понимать при выводе. Если я говорю, что это число "на
самом деле" - десятичное с ФИКСИРОВАННОЙ точкой и тремя знаками
после неё, то ЕС-ка "отдавала честь" и делала. А если нынче для
этого нужно преобразовать в плавучку и поделить - это комп должен
сам делать, не отвлекая меня на такие глупости. - Idler(27.01.2026 21:31)
- "Целочисленное, с тремя точками после", навеяло: Tahoe3B(19 знак., 27.01.2026 21:47,
, ссылка)
- Компилятору-то какое дело? Тут уже упомянули q32(q16). То есть теми
же 16 двоичными битами обозначается число не целое от 0 до 65535, a
дробное от 1 до 2. И это только один из вариантов числа с
фиксированной точкой, который и сейчас широко применяется в DSP. - Idler(27.01.2026 22:59)
- А что, float в этом смысле чем-то отличается от int32 или q31? - Tahoe3B(27.01.2026 23:30,
)
- А что, float в этом смысле чем-то отличается от int32 или q31? - Tahoe3B(27.01.2026 23:30,
- Компилятору-то какое дело? Тут уже упомянули q32(q16). То есть теми
же 16 двоичными битами обозначается число не целое от 0 до 65535, a
дробное от 1 до 2. И это только один из вариантов числа с
фиксированной точкой, который и сейчас широко применяется в DSP. - Idler(27.01.2026 22:59)
- Какая-то каша в голове. Какая связь, между системой счисления
(десятеричной, двоичной - пофиг) и форматом представления int или
float? Что значит "я хочу", "я говорю"? Как математики придумали,
так и будет. И комп или язык программирования здесь никоим боком. - Tahoe3B(27.01.2026 21:43,
)
- Причем тут математики. Вот, совсем простой пример: есть старый
(сейчас не так) цифровой вольтметр. Положение запятой определяется
только переключателем предела измерения, меняющим также входной
делитель. Чип об этой запятой вообще не в курсе, для него это число
- целое. Я хочу, чтобы в команде формата была опция такого
переключателя. - Idler(27.01.2026 23:43)
- Ещё раз, последний. Откуда в ЦЕЛОМ числе взялась запятая? Ты, когда
употребляешь термин ЦЕЛОЕ, понимаешь что это за число или нет?
Откуда, сцуко, в ЦЕЛОМ числе у тебя вдруг появляется дробная
часть?! Потому что если она есть, то это число уже НЕ ЦЕЛОЕ, но
тогда зачем ты его ЦЕЛЫМ называешь? Tahoe3B(242 знак., 28.01.2026 02:16,
, ссылка)
- Потому что оно целое в своих единицах измерения. Если я храню целое
напряжение в мВ, но хочу НАПЕЧАТАТЬ, а не узнать, его значение в
вольтах, достаточно поставить одну точку. Оно будет ВЫГЛЯДЕТЬ
(восприниматься) дробным числом других (обязательно
десятично-кратных) указанных после числа единиц измерения. Idler(916 знак., 28.01.2026 03:48)
- Да про этот костыль с отображением точки я давно понял. Сделай
обертку, в ней реализуешь все хотелки - кривые цифры, отделение
разрядов пробелом, чего там ещё не хватает. А мне оставь sprintf
как он есть: если сказал вывести на отображение 100500, то увидеть
я должен ровно 100500, а не 100.500 или 1.00500. Тебе мало прочей
херни, вроде NDEBUG, SymbolicLink? Надо непременно ещё добавить? - Tahoe3C(28.01.2026 04:22,
)
- Да про этот костыль с отображением точки я давно понял. Сделай
обертку, в ней реализуешь все хотелки - кривые цифры, отделение
разрядов пробелом, чего там ещё не хватает. А мне оставь sprintf
как он есть: если сказал вывести на отображение 100500, то увидеть
я должен ровно 100500, а не 100.500 или 1.00500. Тебе мало прочей
херни, вроде NDEBUG, SymbolicLink? Надо непременно ещё добавить? - Tahoe3C(28.01.2026 04:22,
- Потому что оно целое в своих единицах измерения. Если я храню целое
напряжение в мВ, но хочу НАПЕЧАТАТЬ, а не узнать, его значение в
вольтах, достаточно поставить одну точку. Оно будет ВЫГЛЯДЕТЬ
(восприниматься) дробным числом других (обязательно
десятично-кратных) указанных после числа единиц измерения. Idler(916 знак., 28.01.2026 03:48)
- Ещё раз, последний. Откуда в ЦЕЛОМ числе взялась запятая? Ты, когда
употребляешь термин ЦЕЛОЕ, понимаешь что это за число или нет?
Откуда, сцуко, в ЦЕЛОМ числе у тебя вдруг появляется дробная
часть?! Потому что если она есть, то это число уже НЕ ЦЕЛОЕ, но
тогда зачем ты его ЦЕЛЫМ называешь? Tahoe3B(242 знак., 28.01.2026 02:16,
- Причем тут математики. Вот, совсем простой пример: есть старый
(сейчас не так) цифровой вольтметр. Положение запятой определяется
только переключателем предела измерения, меняющим также входной
делитель. Чип об этой запятой вообще не в курсе, для него это число
- целое. Я хочу, чтобы в команде формата была опция такого
переключателя. - Idler(27.01.2026 23:43)
- "Целочисленное, с тремя точками после", навеяло: Tahoe3B(19 знак., 27.01.2026 21:47,
- Ещё во времена ЕС-эвм мы писали "FORMAT +##.###" для вывода вполне
себе целочисленного числа. Это моё личное дело, как хранить число,
и как его понимать при выводе. Если я говорю, что это число "на
самом деле" - десятичное с ФИКСИРОВАННОЙ точкой и тремя знаками
после неё, то ЕС-ка "отдавала честь" и делала. А если нынче для
этого нужно преобразовать в плавучку и поделить - это комп должен
сам делать, не отвлекая меня на такие глупости. - Idler(27.01.2026 21:31)
- А это единственная серьезная проблема. Все остальные, от
непонимания. Нет никакой "искусственной" дробной части. Нужна
дробная часть - есть float. Нужна дробная часть в рамках
целочисленных инструкций - бери Q-формат. Лишь бы собственные
нестандартные printf не изобретал. - Tahoe3A(27.01.2026 21:16,
- Ну это только проблему с заменой нулей на пробелы помогает решить.
У меня на весь проект единственный раз понадобилось, обошел. А вот
"искусственная" дробная часть - в 90% случаев. Или хранить всё в
плавучке - память позволяет, или каждый раз делить при выводе. И
ещё - width задаёт минимальную длину. А в моих самописных функциях
- максимальную, и если число не лезет, оно заменяется на ####. А
лид.пробелы делаются установкой lead_zero=2 (1-нули, 0-ничего). - Idler(27.01.2026 21:11 - 21:20)
- Ты главное в коде не заметил, это * и width. А %.3d нет по
очевидной причине, у "d" отсутствует дробная часть. - Tahoe3A(27.01.2026 20:40,
- Я так и делаю, но почему он сам не может? "%.3f" есть, а "%.3d"
нету... - Idler(27.01.2026 19:47)