双倍到 std::cout 截断数据
double to std::cout truncates data
int main(){
std::string text = "15555555.2587";
std::stringstream ss;
double number;
ss << text;
ss >> number;
std::cout << std::fixed << std::setw( 11 ) << std::setprecision( 6 )
<< std::setfill( '0' ) << number<<endl;
return 0;
}
上述程序的输出为 15555555.0000
它会截断小数点后的值。
如何获得正确的值?
您按
预期在number
中具有正确的值。问题是您应该通过以下方式cout
打印它:
std::cout << std::fixed << std::setprecision(4) << number;
输出
155555.2587
正如 Alan Stokes 所说,默认情况配置为打印具有 6 个十进制数字的浮点值。您可以通过流操纵器修改此行为,例如std::setprecision()
:
int main()
{
float pi = 3.141592654;
std::cout << std::fixed << std::setprecision( 4 ) << pi << std::endl;
}
上面的代码打印:
3,1416
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 在使用 std::cout 和多线程程序中如何避免数据竞争<iomanip>?
- 使用 CIN 和 COUT 在 C++ 中声明基本数据类型
- cin和cout如何支持不同的数据类型
- C++类似cout的函数,将数据写入文件(日志记录)
- cout 未输出正确的数据
- 双倍到 std::cout 截断数据
- 如何将数据流从 std::cout 发送到 gnuplot
- 我的程序运行并返回 0,但它没有显示给定的 cout 数据
- 获取文件数据后刷新 cout 的问题
- 正在将cout格式的数据写入printf
- MyFile.open 无法正常工作,COUT 不显示数据
- (较低的C++水平)在一段数据上使用"cout"时,它是否会在屏幕上显示之前转到?
- 将 Object int 数据成员转换为浮点数并划分会将奇怪的数据 cout 附加到控制台