![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Larrikin |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
есть такой код
выдает: id(1) value(5.000000) best: id1(-1) id2(-1) act(+) result(-2.000000) err(0.000000) каким образом пять плюс пять получается минус два и как с этим бороться? не могу придумать в какую сторону гуглить... -2 может получиться, если складывать не n[1].value, а n[1].id - только с какой радости это может происходить? описание сделано в файле ncalc.h
|
||||
|
|||||
| comcon1 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Бред какой-то. Вот эта строчка меня смущает...
разве можно называть структуру ключевым словом??? или я чот не в теме переназови тип и выведи так:
|
||||
|
|||||
| Larrikin |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
насчет ключеватости имени был не в курсе в-виду нубства в С, переделал в такое ncalc.h:
код стал:
вывод: id(1) value(5.000000) idsum0 (-2.000000) idsum1 (-2.000000) best: id1(-1) id2(-1) act(+) result(-2.000000) err(0.000000) |
||||
|
|||||
| Ln78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: 13 Всего: 15 |
А компилятор какой? Возможно, для long double нужно использовать формат Lf. Ну и просто, если есть возможность в отладчике посмотреть сами значения (не printf), то можно это сделать для локализации ошибки.
|
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
> uname -rs
FreeBSD 6.2-STABLE > ll total 26 -rw-r--r-- 1 larrikin wheel 1330 Sep 28 12:46 best_plus.c -rw-r--r-- 1 larrikin wheel 1684 Sep 28 14:05 best_plus.o drwxr-xr-x 2 larrikin wheel 512 Sep 27 21:56 data -rw-r--r-- 1 larrikin wheel 1934 Sep 27 20:55 getdata.c -rw-r--r-- 1 larrikin wheel 1812 Sep 28 14:05 getdata.o -rwxr-xr-x 1 larrikin wheel 356 Sep 27 21:21 lmake -rw-r--r-- 1 larrikin wheel 950 Sep 28 09:49 main.c -rw-r--r-- 1 larrikin wheel 1368 Sep 28 14:05 main.o -rwxr-xr-x 1 larrikin wheel 7758 Sep 28 14:05 ncalc -rw-r--r-- 1 larrikin wheel 562 Sep 28 12:37 ncalc.h > ./lmake gcc -c best_plus.c getdata.c main.c -I /home/larrikin/files/ncalc gcc -c best_plus.c getdata.c main.c -I /home/larrikin/files/ncalc gcc -c best_plus.c getdata.c main.c -I /home/larrikin/files/ncalc gcc -o ncalc best_plus.o getdata.o main.o > Добавлено через 14 минут и 4 секунды вот нашел вроде непонятную интересность:
выдает id(1) value(5.000000) id(1) value(5.000000) crazy 5.000000 + 0.000000 = 0.000000 idsum0 (nan) idsum1 (-2.000000) best: id1(-1) id2(-1) act(+) result(-2.000000) err(0.000000) че за? |
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Поменяй формат вывода, вместо "%lf" поставь "%3.4e"
-------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
какая-то бугага полная
id(1) value(5.0000e+00) id(1) value(5.0000e+00) crazy 5.0000e+00 + 3.3172e-315 = 6.6564e-116 idsum0 (-2.0000e+00) idsum1 (-2.0000e+00) best: id1(-1) id2(-1) act(+) result(-2.0000e+00) err(3.2379e-319) Добавлено через 4 минуты и 26 секунд может быть это из-за того, что машина выполняется под VMWare? |
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Проверь тогда где у тебя 1(единица), а где l(буква лы).
Неа, все онрма. Уже посмотрел сам. попробуй еще... рискну предложить на время Long double поменять на double Это сообщение отредактировал(а) akizelokro - 28.9.2007, 13:40 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
проверил все вхождения 1 и l - всё на местах...
|
|||
|
||||
| xvr |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
В gcc long double выводится по формату Lf, а не lf: man 3 printf:
|
||||||||
|
|||||||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |