![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Привет!
Вопрос в теме. Никаких округлений и прочего не нужно. Только разнести по интам. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
double d;
int hi, lo; memcpy(&lo, &d, sizeof(int)); memcpy(&hi, (int*)&d + 1, sizeof(int)); Это сообщение отредактировал(а) Alexeis - 14.11.2008, 12:22 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Alexeis, не нашел представление типа в памяти, поэтому код почти не понял. sizeof у double берет сначала дробную часть, затем дабл приводится к инту и ложется в целую часть? +1 - это пропустить знак?
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Упс неправильно понял вопрос.
Добавлено через 6 минут и 14 секунд Так просто разнести не получиться. у дабла может быть 16 знаков после запятой. 16 цифр просто не влезет в int, максимум 9. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Во первых это не получится сделать точно (в смысле, что собрав эти 2 части назад точно такой же double может не получится) Во вторых, не совсем понятно, что значит 'записать дробную часть в int'? Это число, которое в своем первоначальном виде В ПРИНЦИПЕ не может быть представленно в виде int, т.к. оно всегда меньше единицы В третьих, на уровне машинного представления double выражается как плавающее число с ДВОИЧНЫМ порядком, вам же как я понимаю нужен десятичный, а это не всегда можно преобразовать без потери точности Если же нужно разобрать хоть как то, то можно так:
Это сообщение отредактировал(а) xvr - 14.11.2008, 12:41 |
||||
|
|||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
|
|||
|
||||
Ln78 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: 13 Всего: 15 |
Gunslinger, непонятно, что конкретно нужно. Вот примерно так представляется число double.
|
|||
|
||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
разделение нужно было чисто для косметики: в борланде выводить 2 числа в метки, если в одном числе есть 0 - смещать метку с другим числом, чтобы одно под другим выводилось. Тогда проще будет приводить число к строке и парсить ее. Тогда еще проверку на запятую добавить. Тогда ограничений на размер не будет.
Это сообщение отредактировал(а) Gunslinger - 14.11.2008, 14:05 |
|||
|
||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
25,24765
Вот как!!!!!!!!!!!!! КАКОМ К ВЕРХУ !!! Это сообщение отредактировал(а) JAnty - 29.4.2010, 17:17 -------------------- |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |