Std::remainder
Ugrás a navigációhoz
Ugrás a kereséshez
- Sablon:Label Az
std::remainderfüggvény a C++cmathkönyvtárban található, és a lebegőpontos osztás maradékát számítja ki az alábbi módon:
Ez különbözik a std::fmod-tól, mert a legközelebbi egészhez kerekített hányadosszorost vonja le, nem pedig egyszerűen a maradékot adja vissza.
Használata
#include <iostream>
#include <cmath>
int main() {
double x = 10.5, y = 4.0;
double maradek = std::remainder(x, y);
std::cout << "remainder(10.5, 4.0) = " << maradek << std::endl;
return 0;
}
Kimenet:
remainder(10.5, 4.0) = 2.5
Miért?
- ( 10.5 / 4.0 = 2.625 ) - Kerekítés a legközelebbi egészre: 3 - ( 3 = 12.0 ) - ( 10.5 - 12.0 = -1.5 )
Így a std::remainder(10.5, 4.0) = -1.5.
Összehasonlítás std::fmod-dal
A std::fmod(x, y) egyszerűen az osztás maradékát adja vissza:
std::cout << "fmod(10.5, 4.0) = " << std::fmod(10.5, 4.0) << std::endl;
Kimenet:
fmod(10.5, 4.0) = 2.5
Különbség: - std::remainder a legközelebbi egészhez kerekít, így lehet negatív maradék. - std::fmod egyszerűen a maradékot adja vissza, mindig az osztás előjelével.
További példák
std::cout << "remainder(11.0, 4.0) = " << std::remainder(11.0, 4.0) << std::endl;
std::cout << "remainder(12.0, 4.0) = " << std::remainder(12.0, 4.0) << std::endl;
std::cout << "remainder(-10.5, 4.0) = " << std::remainder(-10.5, 4.0) << std::endl;
Kimenet:
remainder(11.0, 4.0) = -1.0 remainder(12.0, 4.0) = 0.0 remainder(-10.5, 4.0) = 1.5
Összegzés
std::remainder(x, y)a maradékot adja vissza a legközelebbi egészre kerekített osztással.std::fmod(x, y)egyszerűen az osztás után maradó részt adja vissza.- Ha egy olyan maradékot szeretnél, amely szimmetrikus az osztó körül, akkor a
std::remaindera megfelelőbb választás.