c++ - C++ 中的 cout 与 printf 给出不同的输出

标签 c++ printf stdin cout

    #include <iostream>
    #include <iomanip>
    #include <stdio.h>
    using namespace std ;

    int main(){        
      string name ;
    float salary ;
    float made ;

    cin >> name ;
    cin >> salary ;
    cin >> made ;

    float result = salary + 0.15*made ; 
    cout<<"TOTAL = R$ "<<setprecision(2)<<result <<endl ;
    printf("TOTAL = R$ %.2f\n", result) ;

}

输入: jack 500.00 1230.00


输出:

总计 = 6.8e+002 雷亚尔


总计 = 684.50 雷亚尔

正确的输出应该是 684.50。为什么它会产生不同的输出?我想知道 cout 与 printf 相比如何工作

最佳答案

500 + 1230 * 0.15 给你 684.5,因此 cout 仍然是正确的,因为你只允许两位数的精度、68

如果希望cout版本与printf格式相同,需要使用fixed:

cout << "TOTAL = R$ " << fixed << setprecision(2) << result << endl ;

更改您的代码以使用行而不是您当前的行给出:

TOTAL = R$ 684.50
TOTAL = R$ 684.50

关于c++ - C++ 中的 cout 与 printf 给出不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20091915/

相关文章:

c - fgets() 无法正常工作

c++ - 在第二个派生类中调用一个派生类的函数

c++ - 编译多源文件时 Unresolved external 问题

C++/Qt - 错误 : C2027: use of undefined type 'QBitmap'

c - printf ("%s")、printf(s) 和 fputs 之间有什么区别?

c - Printf 可变小数位数

c++ - 我正在开始我的 C++ 学习,使用 CodeBlocks 和 Windows,我应该使用什么编译器?

c - 在 gcc 中使用嵌套循环时 printf 不起作用

powershell - imagemagick 中 STDIN/STDOUT 的正确语法

Node.js - 写入 CSV 文件在生产中创建空文件,而在 Mocha 测试中则正常