|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.06.2012, 09:31 | #1 |
Новичок
Джуниор
Регистрация: 29.06.2012
Сообщений: 2
|
c: некорректное значение в цикле вычислений
Перевод дробного десятичного числа в систему счисления Q. До этого был код с целой переменной и кастингом double в int, результат тот же. Теперь избавился от int вообще и написал так:
Код:
x = 2.960000, y = 2.000000 x - y = 0.960000 x = 4.800000, y = 4.000000 x - y = 0.800000 x = 4.000000, y = 3.000000 // ??????????? как так получается ? |
29.06.2012, 12:13 | #2 |
Software Developer
Участник клуба
Регистрация: 01.03.2011
Сообщений: 1,098
|
Все дело в том, что floor() возвращает максимальное целое число, которое не больше аргумента.
Возможно, из-за погрешности работы с числами с плавающей точкой, в переменной x хранится не 4.000000, а, например, 3.99999999998. Вот и получается. Попробуйте прибавлять при вызове функции какую-нибудь мелкую константную величину. И, кстати... из-за той же погрешности, x вряд ли когда-нибудь будет равен 0...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв. Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062 |
29.06.2012, 13:06 | #3 |
Новичок
Джуниор
Регистрация: 29.06.2012
Сообщений: 2
|
Ну и ну. Подзабыл я уже программирование за долгий перерыв, хотя догадки почему так происходит, были. Буду дома значит вкуривать в ieee floating point format.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
программа вычислений | arhangel2540 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 29.02.2012 20:06 |
Параметры вычислений | Trimbl | Microsoft Office Excel | 2 | 18.02.2012 15:25 |
пропустить значение в цикле | Bape}l{ka | Microsoft Office Excel | 5 | 18.07.2011 17:34 |
Визуализация вычислений | Kolobrod | Помощь студентам | 1 | 09.05.2011 16:21 |
Точность вычислений | aly-lucenko | Фриланс | 1 | 02.05.2011 21:38 |