#include <iostream>
#include <cstdio>
using namespace std;
int main() {
long long a,b,c;
char d;
double e,f;
cin>>a>>b>>c>>d>>e>>f;
cout<<a<<"\n"<<b<<"\n"<<c<<"\n"<<d<<"\n"<<e<<"\n"<<f;
return 0;
}
输入:
3 444 12345678912345 a 334.23 14049.30493
输出:
3 444 12345678912345 a 334.23 14049.30493
成功完成.... 但
输入:
211916801 452082285 97592151379235457 p 19856.992 -5279235.721231465
输出:
并不完美......所以我很困惑 请解释一下..为什么这个输出发生了......
给出解决这个问题的建议
答案 0 :(得分:1)
您必须记住,有许多不同的方法来表示数字变量,尤其是浮点数。输入/输出流有一些关于精度和科学/固定格式的默认选项。
因此,在您的情况下,我猜您希望以与您输入的格式完全相同的格式打印数字。相反,您可能会将两个双打中的第一个打印为19857
,将第二个打印为-5.27924e+06
。所以你认为数字没有被正确解析。
您获得这些值的原因是浮点数的默认precision设置为6,默认formatting使您的第一个数字以固定的方式打印,而第二个数字以科学计数法打印。
要更改默认行为,您可以更改这两个选项,例如通过调用manipulator
cout << setprecision(3) << fixed << e;
cout << setprecision(10) << fixed << f;
请注意,您必须#include <iomanip>
添加其他操纵符setprecision
。或者,在打印cout.precision(3)
之前,您可以在打印e
和cout.precision(10)
之前放置f
。