modf() en C/C++

En C++, modf() es una función predefinida utilizada para cálculos matemáticos. math.h es el archivo de encabezado requerido para varias funciones matemáticas. Todas las funciones disponibles en esta biblioteca toman double como argumento y devuelven double como resultado.

La función modf() divide el argumento dado en dos partes, una es un número entero y la otra es una fracción. La parte entera se almacena en la dirección de memoria señalada por el puntero que se pasa como segundo argumento en la función y la función devuelve la parte fraccionaria.

Sintaxis:

double modf(k, &p)

    Parámetros:

  • k: Es un valor que se va a dividir en dos partes.
  • p: es un puntero que apunta a la parte entera de k después de romperse.
  • Devolver:

  • La función devuelve el valor fraccionario de k .
  • Error:

  • No hay ningún error en particular planteado por esta función.

    Excepciones asociadas a esta función:

  • Si se pasa algo diferente a un número flotante, doble o entero, devuelve un error de tipo.

    // CPP program to demonstrate
    // exception of this function
    #include <bits/stdc++.h>
    using namespace std;
      
    int main()
    {
        // Take any value
        double p, fraction;
        string k = "5.06";
      
        // Breaks k into two parts
        fraction = modf(k, &p);
      
        cout << "Integer Value = " << p 
             << endl << "Fraction Value = " 
             << fraction << endl;
      
        return 0;
    }

    Producción:

    prog.cpp:13:23: error: no matching function for call to 'modf(std::__cxx11::string&, double*)'
      fraction = modf(k, &p);
    .....
    /usr/include/c++/5/cmath:395:3: note: candidate: float std::modf(float, float*)
       modf(float __x, float* __iptr)
    

Nota: k y p deben ser del mismo tipo de datos.

Ejemplos:

  1. Pasando el valor doble (flotante) como argumento:

    // CPP program to demonstrate
    // modf() function
    #include <bits/stdc++.h>
    using namespace std;
      
    int main()
    {
        // Take any value
        double k = 5.06, p, fraction;
      
        // Breaks k into two parts
        fraction = modf(k, &p);
      
        cout << "Integer Value = " << p 
             << endl << "Fraction Value = " 
             << fraction << endl;
      
        return 0;
    }

    PRODUCCIÓN

    Integer Value = 5
    Fraction Value = 0.06
    
  2. Pasando un valor entero como argumento:

    // CPP program to demonstrate
    // modf() function
    #include <bits/stdc++.h>
    using namespace std;
      
    int main()
    {
        // Taking positive value
        double k = 8, p, fraction;
      
        // Breaks k into two parts
        fraction = modf(k, &p);
      
        cout << k << " =>";
        cout << "\tInteger Value = " << p 
             << endl << "\tFraction Value = " 
             << fraction << endl;
      
        // Taking negative value
        k = -8;
        fraction = modf(k, &p);
      
        cout << k << " =>";
        cout << "\tInteger Value = " << p 
             << endl << "\tFraction Value = "
             << fraction << endl;
      
        return 0;
    }

    PRODUCCIÓN

    8  =>    Integer Value = 8
        Fraction Value = 0
    -8 =>    Integer Value = -8
        Fraction Value = -0
    

Nota: Como en el código anterior, el valor positivo da una salida positiva y el valor negativo da una salida negativa. Por lo tanto, tanto el fraccionario como el entero tienen el mismo signo que el valor dado en el argumento.

Publicación traducida automáticamente

Artículo escrito por AKASH GUPTA 6 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *