C++ C+中的cout vs printf+;给出不同的输出 #包括 #包括 #包括 使用名称空间std; int main(){ 字符串名; 浮动工资; 制作浮子; cin>>名称; cin>>工资; cin>>制造; 浮动结果=工资+0.15*made; cout
C++ C+中的cout vs printf+;给出不同的输出 #包括 #包括 #包括 使用名称空间std; int main(){ 字符串名; 浮动工资; 制作浮子; cin>>名称; cin>>工资; cin>>制造; 浮动结果=工资+0.15*made; cout,c++,printf,stdin,cout,C++,Printf,Stdin,Cout,500+1230*0.15为您提供了684.5,因此cout仍然正确,因为您只允许两位精度,即6和8 如果希望cout版本与printf格式相同,则需要使用fixed: #include <iostream> #include <iomanip> #include <stdio.h> using namespace std ; int main(){ string name ; fl
500+1230*0.15
为您提供了684.5
,因此cout
仍然正确,因为您只允许两位精度,即6
和8
如果希望cout
版本与printf
格式相同,则需要使用fixed
:
#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) ;
}
500+1230*0.15
为您提供了684.5
,因此cout
仍然是正确的,因为您只允许两位精度,即6
和8
如果希望cout
版本与printf
格式相同,则需要使用fixed
:
#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) ;
}
设置精度会更改有效数字的数量,因此您有两个有效数字(68) 您需要的是由
setiosflags(ios::fixed)
设置的定点格式
正确的代码是:
TOTAL = R$ 684.50
TOTAL = R$ 684.50
coutSet precision更改有效数字的数量,因此您有两个有效数字(68)
您需要的是由setiosflags(ios::fixed)
设置的定点格式
正确的代码是:
TOTAL = R$ 684.50
TOTAL = R$ 684.50
cout默认情况下,ostream
使用%g
格式说明符。您需要告诉它使用%f
,使用以下任一选项:
cout << "TOTAL = R$ " << setiosflags(ios::fixed) << setprecision(2) << result << endl;
或
然后写:
std::ostream&
salary( std::ostream& dest )
{
dest.setf( std::ios_base::fixed, std::ios_base::floatfield );
dest.precision( 2 );
return dest;
}
std::cout默认情况下,ostream
使用%g
格式说明符。您需要告诉它使用%f
,使用以下任一选项:
cout << "TOTAL = R$ " << setiosflags(ios::fixed) << setprecision(2) << result << endl;
或
然后写:
std::ostream&
salary( std::ostream& dest )
{
dest.setf( std::ios_base::fixed, std::ios_base::floatfield );
dest.precision( 2 );
return dest;
}
std::cout You need fixed:coutYou need fixed:cout我不认为如果你传递它ios::fixed
它就定义了std::setiosglags
。无论如何,它不会正常工作。为什么它不能正常工作呢?我已经测试过它,它确实提供了确切要求的输出…使用哪个编译器?或者你没有实际测试它够了:它不适用于VC++,也不适用于g++。请尝试设置ios\u base::fixed
,然后设置ios\u base::scientific
,然后再设置一次ios\u base::fixed
。为了记录在案,您链接到的页面总体上是不正确的。不要使用它;这很糟糕。如果您通过它,我不认为std::setiosglags
ios::fixed
。无论如何,它都不能正常工作。为什么不能正常工作呢?我已经测试过了,它确实提供了准确的要求输出…使用哪种编译器?或者可能您实际上测试得不够彻底:它不适用于VC++,也不适用于g++。请尝试设置ios\u base::fixed
,然后ios\u base::scientific
,然后再ios_base::fixed
。为了记录,您链接到的页面总体上是不正确的。不要使用它,它很糟糕。