Std::remainder

Innen: testwiki
Ugrás a navigációhoz Ugrás a kereséshez

Sablon:Engfn

  1. Sablon:Label Az std::remainder függvény a C++ cmath könyvtárban található, és a lebegőpontos osztás maradékát számítja ki az alábbi módon:

remainder(x,y)=xround(x/y)×y

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::remainder a megfelelőbb választás.


Sablon:Engl