powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / fmod(1.0, 0.2)=0.2
15 сообщений из 40, страница 2 из 2
fmod(1.0, 0.2)=0.2
    #39208062
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все эти кривые очень индивидуальны. У людей, занятых интеллектуальным трудом (а хорошие программисты этим и занимаются (не все программисты - хорошие, конечно)), всё это происходит совершенно по другому, чем у людей работающих на обычной скучной и нудной работе

Подожди. Как индивидуально? Нарисуй для себя эту кривую pls.
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208072
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПросто ответ
на него не лежит в плоскости того как работает fmod()
Ну это не скажите.
1 / 0.2 == 5
Почему бы тем кто реализовывал fmod() сначала не проверить это прежде чем применять алгоритм Евклида ( 19011043 ?),
который приводит к нарастанию ошибки представления числа в двоичном виде.
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208081
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETmaytonПросто ответ
на него не лежит в плоскости того как работает fmod()
Ну это не скажите.
1 / 0.2 == 5
Почему бы тем кто реализовывал fmod() сначала не проверить это прежде чем применять алгоритм Евклида ( 19011043 ?),
который приводит к нарастанию ошибки представления числа в двоичном виде.
Я здесь предположу что
Евклид был применен как Generic а тип данных
скорее всего был туда подставлен.

Но если тебе интересно обсудить - приведи в студию
код, на который ты смотришь сейчас и твое предложение
по improovement и я думаю мне и всем будет интересно
это обсудить.

Это вместо "почему-бы".
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208111
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NET1 / 0.2 == 5
Код: plaintext
1.
0.6 / 0.2 != 3


тест
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
	double num = 0.6;
	double denum = 0.2;
	double res = num / denum;
	if(res == 3.) {
		printf("res == 3\n");
	} else {
		printf("res != 3\n");
	}


Какой смысл частные случаи рассматривать?
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208119
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Погрешность есть и надо это учитывать при расчетах. А то что иногда получается точный результат - это частный случай. Все частные случаи устанешь прописывать.
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208198
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПогрешность есть и надо это учитывать при расчетах. А то что иногда получается точный результат - это частный случай. Все частные случаи устанешь прописывать.
С этим не поспоришь.
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208403
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ здесь предположу что
Евклид был применен как Generic а тип данных
скорее всего был туда подставлен.
Я думаю, что т.к. речь идет про С, то это вряд ли так ))

Скорее всего полвека назад в библиотеку добавили эту функцию и реализовали ее вычитаниями, потому что деление было на порядки медленнее.
А потом в связи с тем что эта функция никому не нужна, про нее просто забыли, и вот на днях вспомнили тут
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208414
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А есть еще ф-я remainder(x,y) которая уже нормально считает. Ее добавили в С99.
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208427
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskymaytonЯ здесь предположу что
Евклид был применен как Generic а тип данных
скорее всего был туда подставлен.
Я думаю, что т.к. речь идет про С, то это вряд ли так ))

Скорее всего полвека назад в библиотеку добавили эту функцию и реализовали ее вычитаниями, потому что деление было на порядки медленнее.
А потом в связи с тем что эта функция никому не нужна, про нее просто забыли, и вот на днях вспомнили тут
Ну, прям на днях не далее чем в 2017 году вспоминали.

Anatoly MoskovskyА есть еще ф-я remainder(x,y) которая уже нормально считает
Да, вот это нормальная функция. Он, конечно, тоже не возвращает 0 по сабжу.
Но от неё никто и не ждёт ноля. Как говорят в Одессе
"Не надо мне правды, дайте мне то, во что не стыдно было бы поверить" :)
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208429
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETНу, прям на днях не далее чем в 2007 году вспоминали.
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208438
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
remainder() не совсем тоже самое
http://www.cplusplus.com/reference/cmath/remainder/ ...
Output:

remainder of 5.3 / 2 is -0.700000
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208449
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно просто учесть погрешность.
Код: plaintext
1.
2.
3.
4.
5.
	double num = 1.;
	double denum = 0.2;
	double delta = num * 1e-15;
	double res = fmod(num + delta, denum) - delta;
	printf("  res %e => %a \n", res, res);
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39208477
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовЗадумался, сколько лет MasterZiv-у. Сам-то он не помнит .

Как минимум, 45.
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39209837
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПодожди. Как индивидуально? Нарисуй для себя эту кривую pls.

Я слишком критичен к себе, чтобы рисовать такие кривые, да и не люблю себя оценивать
...
Рейтинг: 0 / 0
fmod(1.0, 0.2)=0.2
    #39209844
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр Седов
MasterZivДа я всё жизнь (не, пол) этот язык изучаю,Задумался, сколько лет MasterZiv-у. Сам-то он не помнит.

вы бы сразу спрашивали где ключи от квартиры лежат и серию с номером паспорта
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / fmod(1.0, 0.2)=0.2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]