![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: нет Всего: 2 |
Вроде вопрос простой, но что-то не найду простого решения.
Есть числа double в диапазоне 0.1-0.0000000001. Нужно эти числа в таком формате и представлять текстом. Функция FloatToStrF с режимом ffGeneral не показывает числа длиннее 0.0001. Если после запятой более трех нулей, то число преобразуется в строку вида 1E-7. Это сообщение отредактировал(а) Нитонисе - 5.1.2013, 16:39 |
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
Такой вариант решает вопрос?
|
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: нет Всего: 2 |
Я работаю в RAD Studio Builder XE и там вывести текстовую величину в формате std::string я не знаю как, чтобы проверить. Надо бы получить строку в UnicodeString. Замечу, что точность double может быть любая и может образовываться мусор. Например число 0.00001 может храниться в памяти как 0.000010000000002. Вот надо этот мусор отсекать и представлять число только до единички. |
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
По быдлеру ничего не могу сказать
![]() как вариант можно умножать на 10, пока число не станет >1, тогда будет ясно, какаю точность нужно использовать для отсечения.. но это так.. мысли на тему.. скорее всего существует гораздо более элегантное решение ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: нет Всего: 2 |
||||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
наверное как то так
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: нет Всего: 2 |
Нет. Тут любое число представлено 15-ю разядами. То есть 0.001 будет представлено как 0.00100000000000. Поясню еще одну вещь. Число всегда равно единице, только у нее порядок может быть разный. Например 1E+3 или 1E-3. Нужно эти числа записывать в обычном виде - 1000 и 0.001. Это сообщение отредактировал(а) Нитонисе - 5.1.2013, 18:25 |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Дурацкий совет, наверное, но стОит тогда хранить порядок отдельно, для 1000 - это будет 3, для 0.001 - соответственно, -3. Параллельно можно содержать само число в когерентном состоянии... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
тогда зачем тут double ? чтоб жизнь медом не казалась? ![]()
насколько я знаю, тут любят подсказывать тем, кто сам пытается найти.. плюс те кто билдер любят, они в других отделах развлекаются... ![]() Это сообщение отредактировал(а) mes - 5.1.2013, 19:11 |
||||
|
|||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: нет Всего: 2 |
Затем что так проще. Не буду вдаваться в подробности, потому как это уже вне топика. Как я вижу - простого решения по представлению double строкой (с учетом моих требований к этой конвертации) нет?
А я считаю, что глупо тратить время на то, что тебе могут подсказать гораздо быстрее. Это неэффективно. И странно слышать подобное на форуме программистов - людей, которые занимаются экономией времени, выполняя некоторые рутинные (и не только) действия в автоматическом режиме. Форумы на то и существуют, чтобы делиться информацией. Вы мне что-то подскажите, сэкономив время, я - вам. Взаимовыгодное общение. Только не надо говорить, что моя помощь вам как программисту не требуется. В это я охотно верю, поскольку не являюсь профессиональным программистом ![]() ![]() |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Вы услышали? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: нет Всего: 2 |
feodorv, да, видел конечно. Просто это сложный путь. У меня это число в формате double и мне удобно что бы в этом формате оно и было. Вся проблема только в его текстовом представлении. Я думал что есть что-то простое наподобие FloatToStrF. Но если нету, тогда придется мудрить. И идея представления числа в виде простого int'а обозначающего степень - не плоха.
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот только вы одного не учитываете.. о том, что доки пересказывать неполезно для обоих, как для рассказчика, который тратит время и может не учесть нюансов, так и для спрашивающего, который получает неполную информацию, заставляющая в последствии опять же задавать вопрос подобного уровня.. где там доки по билдерским типам я не знаю, но если б подобное касалось бы стд, получили бы ссылку на доку.. все то оно так, за мелким исключением.. вот выгодно ли Вам загружать себя информацией от третьих лиц, которую еще и перепроверять нужно.. одно дело когда вы спрашиваете о методах и подходах, тут конечно лучше спросить, если гугль не находит.. А вот о том какими конструкторами или методами обладает документированный класс, спрашивать далеко не выгодно для Вас же самих.. Это сообщение отредактировал(а) mes - 5.1.2013, 20:55 |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: нет Всего: 2 |
Я понимаю, что исчерпывающий ответ можно и не получить, если это займет много времени отвечающего ![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |