powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Format
17 сообщений из 17, страница 1 из 1
Format
    #33834490
el'f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть число (m1) типа дабл. мне его надо перевести в строку.
если пишу так:
Код: plaintext
1.
2.
CString s1;
s1.Format("%d",m1);
то в s1 получаю 0, если писать например через f, ну что-то типа такого:
Код: plaintext
1.
2.
CString s1;
s1.Format("%f",m1);
то получается строка с лишними нулями после точки. я же не могу обрубить например так: s1.Format("%1.1f",m1); потому что не знаю сколько знаков в числе после точки и вообще есть ли они.
как правильно перевести в строку?
...
Рейтинг: 0 / 0
Format
    #33834642
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно реашают, сколько в числа с плавающей точкой значимых цифр после запятой. Столько и выводят, независимо нули там или нет.

Ты можешь удалять ведомые нули вручную после преобразования в строку.
...
Рейтинг: 0 / 0
Format
    #33834648
el'f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как удалить эти нули?
...
Рейтинг: 0 / 0
Format
    #33834660
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
el'fа как удалить эти нули?

Пробегаешь начиная с конца строки до первого не нуля. Все встречаемые нули ('0') заменяешь нулевой код (0).
...
Рейтинг: 0 / 0
Format
    #33834666
el'fесть число (m1) типа дабл. мне его надо перевести в строку.
если пишу так:
Код: plaintext
1.
2.
CString s1;
s1.Format("%d",m1);
то в s1 получаю 0, если писать например через f, ну что-то типа такого:
Код: plaintext
1.
2.
CString s1;
s1.Format("%f",m1);
то получается строка с лишними нулями после точки. я же не могу обрубить например так: s1.Format("%1.1f",m1); потому что не знаю сколько знаков в числе после точки и вообще есть ли они.
как правильно перевести в строку?
ltoa(),ultoa() и msdn Вам в помощь....
...
Рейтинг: 0 / 0
Format
    #33834679
el'f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так это целый алгоритм надо писать. неужели не существует просто ф-ии, которая бы это делала?!
...
Рейтинг: 0 / 0
Format
    #33834684
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
el'fтак это целый алгоритм надо писать. неужели не существует просто ф-ии, которая бы это делала?!
Не алгоритм, а простой цикл
...
Рейтинг: 0 / 0
Format
    #33834691
el'f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Станислав Сltoa(),ultoa() и msdn Вам в помощь.... сдесь тоже через указание числа значимых цифр, а у меня это число неизвестно
...
Рейтинг: 0 / 0
Format
    #33834694
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Числа с плавающей точкой, особенны тем, что у них есть определение точности и значимых цифр. Обычно выводят все значимые цифры после запятой, пусть там даже и нули, чтобы человек видел, с какой точностью он получает значение. Он знает, что после 5-ки в 2.500 идут нули, а так 2.5 - это не отражает (может там было 2.54???).
...
Рейтинг: 0 / 0
Format
    #33834707
el'f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а может лучше разделить число на 2 целых (целая часть и остаток) и потом уже перевести их в строки?
...
Рейтинг: 0 / 0
Format
    #33834715
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
el'fа может лучше разделить число на 2 целых (целая часть и остаток) и потом уже перевести их в строки?

Это будет сложнее. А если у тебя будет число 2.025?
...
Рейтинг: 0 / 0
Format
    #33834751
el'f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как написать этот цикл?
...
Рейтинг: 0 / 0
Format
    #33834886
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
el'fа как написать этот цикл?

Ты не знаешь как писать циклы или не знашь как обращаться к символам CString?
...
Рейтинг: 0 / 0
Format
    #33835029
el'f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не, циклы то я умею писать, я не знаю как просмотреть строку с конца и убрать нули :)
...
Рейтинг: 0 / 0
Format
    #33835048
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
el'fне, циклы то я умею писать, я не знаю как просмотреть строку с конца и убрать нули :)

Узнать длину строки GetLength(), как проще всего убирать нули я уже написал.
...
Рейтинг: 0 / 0
Format
    #33835241
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, всё проще: надо использовать тип "g":
Код: plaintext
1.
2.
CString c;
double d =  1 . 23 ;
c.Format("%g",d);
При этом Trailing zeros are truncated (MSDN).
...
Рейтинг: 0 / 0
Format
    #33835268
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно, работает. Даже в анси си, хотя по стандарту:

автор
f соответствует числу с плавающей точкой, необязательно со знаком; следующий указатель должен являться указателем на float.

e Эквивалентно f.

g Эквивалентно f.

E Эквивалентно f.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Format
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]