|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.04.2011, 20:28 | #1 |
Пользователь
Регистрация: 23.10.2010
Сообщений: 17
|
Перевод Double в строку *char
Как получить из переменной типа Double массив char'ов (в MS VC++)?
Нашёл следующее: Код:
Ещё вариант: Код:
Или функции: char* _ecvt(double value, int count, int* dec, int* sign); char* _fcvt(double value, int count, int* dec, int* sign); char* _gcvt(double value, int digits, char* buffer); тут либо точность задавать жёстко либо буфер опять, да и вообще не очень понятно. Так нет ли способа получить на выходе из функции *char, чтоб он указывал на массив содержащий просто все цифры числа и точку, отделяющую дробную часть? |
16.04.2011, 20:57 | #2 |
C++
Форумчанин
Регистрация: 27.03.2011
Сообщений: 803
|
Функция ftoa().
Ищете информацию по C++?
cplusplus.com |
16.04.2011, 21:19 | #3 |
Пользователь
Регистрация: 23.10.2010
Сообщений: 17
|
Для ftoa(): общее число цифр в сформированной строке, включая целую, дробную части и разделительную точку - не больше 7.
А мне надо всё, что есть по-максимуму, чтоб не терять имеющуюся точность. Может можно как-то написать самому такую функцию, да только алгоритм не могу осознать. Можно выделить целую часть в интеджер. Интеджер в строку переводится элементарно. Дописать точку. Вычесть из исходного числа целую часть, и потом, умножая на десять, получать разряды. Но когда в таком случае остановиться? |
16.04.2011, 21:54 | #4 | |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Цитата:
остановиться можно на определенном количестве цифр после запятой или вывести как период, например (как это сделать поищи на форуме, были уже темы)
Форматируйте код, будьте людьми.
|
|
16.04.2011, 22:05 | #5 |
Пользователь
Регистрация: 23.10.2010
Сообщений: 17
|
То есть в double нет конкретного определённого числа верных разрядов после запятой?
|
16.04.2011, 22:08 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
они на то и числа с плавающей запятой.
там есть погрешности. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
16.04.2011, 22:11 | #7 |
Пользователь
Регистрация: 23.10.2010
Сообщений: 17
|
Ок. Попробую так. Всем спасибо за советы и ответы.
|
17.04.2011, 10:46 | #8 | |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Цитата:
Форматируйте код, будьте людьми.
|
|
17.04.2011, 12:59 | #9 |
Пользователь
Регистрация: 23.10.2010
Сообщений: 17
|
Для двоичных-то точно есть предел, поэтому я и предполагал наличие способа определить максимальный разряд после запятой, который был бы определён верно.
Вот что примерно получилось (для отладки оформил отдельным проектом): Код:
Последний раз редактировалось SrgGld; 17.04.2011 в 14:45. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
перевод в string из unsigned char | Dimarik | Общие вопросы C/C++ | 5 | 22.03.2011 22:46 |
Перевод char во float в С. | vitalyisaev2 | Помощь студентам | 1 | 07.05.2010 19:13 |
Перевод String в Double | mauseO | Помощь студентам | 2 | 29.01.2010 15:29 |
Перевод десятичных чисел в тип Double | Kuzya59 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 04.12.2008 15:41 |
перевод из int в массив char. | Freeman | Общие вопросы C/C++ | 5 | 30.05.2008 17:49 |