Я пытаюсь найти количество раз, когда один двойник делится на другой в С++, и единственная функция, которую я нашел для этого, была remquo. Но при его использовании он не дает ожидаемых результатов, а результирующие частные находятся только между 0 и 3, когда они должны быть от 0 до 20.
удвоения меньшего размера работают, есть ли проблемы с более точными числами с плавающей запятой?
int quotient;
double remainder = remquo((coordX+maxX), tileSizeX, "ient);
cout << coordX+maxX << " / " << tileSizeX << " = " << quotient << " r " << remainder << endl;
return quotient;
В этом случае maxX будет 0,773, а coordX будет числом от -0,773 до 0,773 и, наконец, tileSizeX будет около 0,073619.
вот некоторые результаты вызова cout:
0,773 / 0,073619 = 2 r 0,0368095, но 0,073619 * 2 + 0,0368095 = 0,1840475, а не 0,773, как я ожидал.
0,085/0,073619 = 0 r 0,011381 ‹- неправильно
0,181 / 0,073619 = 2 r 0,0337619 ‹- справа
0,433 / 0,073619 = 3 r -0,00871429 ‹- неправильно
1,269 / 0,073619 = 0 r 0,0174762 ‹- неправильно
Остаток всегда кажется правильным, но частное почти никогда не бывает таковым. Есть что-то, чего я не понимаю.