Maison  >  Questions et réponses  >  le corps du texte

La différence entre cout et printf en C++

Comme le montre le code suivant, il existe coutprintfdifférences lors de la sortie des données.

double ans = 0, max = 135.349, min = 3.88633;
ans = max * 2086458231 / min;
cout << ans << endl;
printf("%lf", ans);

Sortie

7.26652e+010
72665192664.000000

Pourquoi y a-t-il une telle différence ?

PHPzPHPz2735 Il y a quelques jours1628

répondre à tous(5)je répondrai

  • 習慣沉默

    習慣沉默2017-05-16 13:26:08

    Problème de sortie formatée en C++, le format de sortie par défaut des nombres à virgule flottante de cout n'est pas %lf Si vous souhaitez définir le format de sortie, vous pouvez vous référer au lien suivant
    http://en.cppreference.com/w/. ..

    #include <iostream>
    
    int main() {
        double ans = 0, max = 135.349, min = 3.88633;
        ans = max * 2086458231 / min;
    
    
        std::cout << ans << std::endl;  // 7.2665e+10
    
        std::cout.setf(std::ios::scientific);
        std::cout << ans << std::endl;  // 7.266497e+10
    
        std::cout.unsetf(std::ios::scientific);
        std::cout.setf(std::ios::fixed);
        std::cout << ans << std::endl;  // 72664965432.070602
    
        printf("%lg\n", ans);   // 7.2665e+10
        printf("%lf\n", ans);   // 72664965432.070602
    
        return 0;
    }

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-16 13:26:08

    cout est la syntaxe du C++, printf est le langage C, mais C est conservé dans cstdio, les résultats sont différents car cout conserve par défaut N bits + méthode de calcul scientifique pour les nombres à virgule flottante trop longs, mais cout peut également l'être. used Utilisez des paramètres pour formater la sortie, tels que
    cout << setiosflags(ios::fixed) << f
    Pas besoin de notation scientifique. Vous pouvez consulter le manuel pour plus de paramètres
    printf peut également être formaté. , très pratique

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:26:08

    coutLes bits valides de sortie du flux par défaut sont de 6 chiffres. S'il dépasse 6 chiffres, il sera automatiquement formaté. Si la longueur entière dépasse 6 chiffres, il sera automatiquement formaté en notation scientifique.

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 13:26:08

    cin et cout sont des codes C++, printf et scanf sont des codes C. %f en langage C génère des données à virgule flottante sous forme décimale.

    répondre
    0
  • 漂亮男人

    漂亮男人2017-05-16 13:26:08

    cout est la méthode de sortie dans la bibliothèque standard c++ iostream, tandis que printf est conservé par le langage c. La sortie formatée par défaut de cout est différente de %lf

    .

    répondre
    0
  • Annulerrépondre