C++ 为什么我不能打印32.0而不是32而不进行类型转换?
这是我的代码。输入是 五, 104030020 123445 我试图找到一个大小为n的数组的加权平均值,向量a包含n个元素,它们对应的权重在向量b中。我不明白为什么打印的是32而不是32.0?有人能告诉我为什么以及如何改变它吗C++ 为什么我不能打印32.0而不是32而不进行类型转换?,c++,syntax,statistics,type-conversion,weighted-average,C++,Syntax,Statistics,Type Conversion,Weighted Average,这是我的代码。输入是 五, 104030020 123445 我试图找到一个大小为n的数组的加权平均值,向量a包含n个元素,它们对应的权重在向量b中。我不明白为什么打印的是32而不是32.0?有人能告诉我为什么以及如何改变它吗 int main() { int n; cin>>n; vector<int> a(n),b(n); for(int i=0;i<n;i++){ cin>> a[i] ; }
int main() {
int n;
cin>>n;
vector<int> a(n),b(n);
for(int i=0;i<n;i++){
cin>> a[i] ;
}
for(int i=0;i<n;i++){
cin>> b[i] ;
}
double s=0,w=0;
for(int i=0;i<n;i++){
s+=b[i]*a[i];
w+=b[i];
}
cout<<s/w*1.0;
return 0;
}
intmain(){
int n;
cin>>n;
向量a(n),b(n);
对于(int i=0;i>a[i];
}
对于(int i=0;i>b[i];
}
双s=0,w=0;
for(int i=0;i是否打印32
或32.0
是输出格式的主题。默认情况下,如果可能,它会剪裁所有不必要的数字(以及小数点)。*1.0
对此没有帮助。)
相关功能在
中提供:
例如:
#include <iomanip>
#include <iostream>
int main()
{
std::cout
<< 32.0 << '\n'
<< std::fixed << std::setprecision(1) << 32.0 << '\n';
}
它是否打印32
或32.0
是输出格式的主题。默认情况下,如果可能,它会剪裁所有不必要的数字(以及小数点)。*1.0
对此没有帮助。)
相关功能在
中提供:
例如:
#include <iomanip>
#include <iostream>
int main()
{
std::cout
<< 32.0 << '\n'
<< std::fixed << std::setprecision(1) << 32.0 << '\n';
}
如果要设置输出格式,可以使用setprecision
的iomanip
功能,如下所示:
std::cout << std::fixed;
std::cout << std::setprecision(1); //setprecision(n) where n = number of decimal digits
std::cout <<s/w << '\n';\
std::cout如果要设置输出格式,可以使用setprecision
的iomanip
函数,如下所示:
std::cout << std::fixed;
std::cout << std::setprecision(1); //setprecision(n) where n = number of decimal digits
std::cout <<s/w << '\n';\
默认情况下,std::coutc++cout
自动删除尾随的零
如果您希望看到它们,则必须使用std::coutc++cout
在默认情况下自动删除尾随的零
如果您想查看它们,必须使用std::cout