|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.03.2008, 14:52 | #1 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Преобразование числа с плавающей точкой в строку
Код
Код:
Сообщение следующего содержания: Цитата:
в виде строки построить число. Но это гемор еще тот. Если у кого готовое что есть, может выложите здесь. А мож у кого мысли есть по умнее моих. Тож сюда выкладывайте. Заранее благодарю |
|
07.03.2008, 15:17 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
07.03.2008, 15:57 | #3 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Sibedir, уточняйте. Вас ист дас "точное значение числа с плавающей точкой"? У вещественных в машинном представлении не может быть точных значений по определению.
|
08.03.2008, 19:26 | #4 | ||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Цитата:
а e: Extende = 2.95147905179352826E20 = 0x40438000000000000004 Цитата:
Как раз в машинном представлении любое число ограниченно конечным набором цифр (бит). Или это не так? Но если честно, мне это уже не так важно. Я всетаки решил использовать тип Int64. Мне не понравился способ представления вещественного числа в памяти (см. пост #1). Он многое теряет в точности. Ведь не смотря на то, что есть такое вещественное число как 2.9514790517935282584E20 (аж 19 знаков после запятой), а вот такого числа как 2.951...583E20 уже нет. Тут вообще с точностью полная неразбериха. Не удевительно, что функции представления числа с плавающей точкой как строки не показывают цифры далше чем 17-ая после запятой. Это просто не имело бы смысла. |
||
08.03.2008, 19:33 | #5 |
Участник клуба
Регистрация: 02.09.2007
Сообщений: 1,193
|
Посмотрите эту статью http://www.delphikingdom.com/asp/vie...?catalogid=374
|
08.03.2008, 20:04 | #6 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Спасибо, _Dmitry. Об этом действительно не пиcали в тех книгах, которые я читал. Многое, конечно, и так было понятно, но это уже с высоты нескольких лет программирования. А хотелось бы это знать уже с универа.
В общем, спасибо за пояснение. |
08.03.2008, 20:07 | #7 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Цитата:
|
|
08.03.2008, 20:22 | #8 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Да не, B_N, мне милиарды не нужны. Мне хватит и трех знаков после запятой. Для меня главное знать точное значение числа. И такие приколы, как
0.1 = 0x3ffbcccccccccccccccd = 0x3ffbcccccccccccccd00 мне не нужны. А если вам интересно, что это я такое делаю и для чего мне это все нужно, то тут вообщето секретов нет. Я пишу CAD-систему, а тип я выбираю для хранения координат. Кстати, я так понял, что в большенстве CAD-систем координаты хранятся тоже в виде целых чисел, а уже для вывода на экран используется деление на 10^x. Последний раз редактировалось Sibedir; 08.03.2008 в 20:26. |
08.03.2008, 20:39 | #9 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Вещественные числа в машинном виде тоже хранятся в "целом" виде в любом калькуляторе, что здесь такого? А серьезные инженерные и, тем более, научные системы просто хранят "самодельные", не поддерживаемые центральным проессором, сопроцессором, числа с большей точностью, смотря какая задача. Я почему Вам и советую, найдите какую-нибудь приличную библиотеку для больших чисел да и всё. А точность int64 АБСОЛЮТНО ТАКАЯ ЖЕ, как у типа extended - 64 бита или 20 значащих знаков, только у extended еще и экспонента есть до 4-х с лишним тысяч порядков, которую Вы при такм раскладе будете вынуждены хранить отдельно.
|
09.03.2008, 19:22 | #10 | ||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Цитата:
Цитата:
Последний раз редактировалось Sibedir; 09.03.2008 в 19:24. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как сложить два числа с плавающей точкой | forsy | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 19 | 29.03.2010 02:15 |
Преобразование числа в строку | )Игнат( | Общие вопросы Delphi | 6 | 06.07.2008 09:32 |
Сравнение чисел с плавающей точкой ? | Ulex | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 11 | 12.04.2008 21:14 |
Числа с плавающей точкой | Blondinka | Общие вопросы Delphi | 8 | 21.09.2007 11:32 |