百亿的浮点数,将各位分开表示。
百亿的浮点数,将各位分开表示。求助……
/* 1552156 1班 冯华森*/
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double a;
cin >> a;
long long A, B, C, D, E, F, G, H, I, J, K;
float L, M;
A = (long long)a / 10000000000;
B = (long long)(a - A * 10000000000) / 1000000000;
C = (long long)(a - A * 10000000000 - B * 1000000000) / 100000000;
D = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000) / 10000000;
E = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000) / 1000000;
F = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000) / 100000;
G = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000) / 10000;
H = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000) / 1000;
I = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000) / 100;
J = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000 - I * 100) / 10;
K = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000 - I * 100 - J * 10);
L = (float)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000 - I * 100 - J * 10 - K) * 10;
M = (float)((a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000 - I * 100 - J * 10 - K) * 10 - (int)L) * 10;
L = (int)L;
M = (int)M;
cout << "百亿位:" << A <<'\n'
<< "十亿位:" << B <<'\n'
<< "亿位:" << C <<'\n'
<< "千万位:" << D <<'\n'
<< "百万位:" << E << '\n'
<< "十万位:" << F << '\n'
<< "万位:" << G << '\n'
<< "千位:" << H << '\n'
<< "百位:" << I << '\n'
<< "十位:" << J <<'\n'
<< "个位:" << K <<'\n'
<< "十分位:" << L <<'\n'
<< "百分位:" << M <<'\n';
return 0;
}
编译器vs2015。
输入9999999999.90和9999999999.99时输出不对,99999999999.90输出也不对但是99999999999.99输出是对的。
------解决思路----------------------
按你的思路做,只对只有2位小数点的有效,其它无,也不知你题目是什么,要用哪些知识做。
/* 1552156 1班 冯华森*/
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double a;
cin >> a;
long long A, B, C, D, E, F, G, H, I, J, K;
float L, M;
A = (long long)a / 10000000000;
B = (long long)(a - A * 10000000000) / 1000000000;
C = (long long)(a - A * 10000000000 - B * 1000000000) / 100000000;
D = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000) / 10000000;
E = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000) / 1000000;
F = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000) / 100000;
G = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000) / 10000;
H = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000) / 1000;
I = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000) / 100;
J = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000 - I * 100) / 10;
K = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000 - I * 100 - J * 10);
L = (float)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000 - I * 100 - J * 10 - K) * 10;
M = (float)((a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000 - I * 100 - J * 10 - K) * 10 - (int)L) * 10;
L = (int)L;
M = (int)M;
cout << "百亿位:" << A <<'\n'
<< "十亿位:" << B <<'\n'
<< "亿位:" << C <<'\n'
<< "千万位:" << D <<'\n'
<< "百万位:" << E << '\n'
<< "十万位:" << F << '\n'
<< "万位:" << G << '\n'
<< "千位:" << H << '\n'
<< "百位:" << I << '\n'
<< "十位:" << J <<'\n'
<< "个位:" << K <<'\n'
<< "十分位:" << L <<'\n'
<< "百分位:" << M <<'\n';
return 0;
}
编译器vs2015。
输入9999999999.90和9999999999.99时输出不对,99999999999.90输出也不对但是99999999999.99输出是对的。
------解决思路----------------------
按你的思路做,只对只有2位小数点的有效,其它无,也不知你题目是什么,要用哪些知识做。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
long long a,b;
char ch;
cin >> a;
cin >> ch;
cin >> b;
long long A, B, C, D, E, F, G, H, I, J, K , L, M;
A = (long long)a / 10000000000;
B = (long long)(a - A * 10000000000) / 1000000000;
C = (long long)(a - A * 10000000000 - B * 1000000000) / 100000000;
D = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000) / 10000000;
E = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000) / 1000000;
F = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000) / 100000;
G = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000) / 10000;
H = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000) / 1000;
I = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000) / 100;
J = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000 - I * 100) / 10;
K = (long long)(a - A * 10000000000 - B * 1000000000 - C * 100000000 - D * 10000000 - E * 1000000 - F * 100000 - G * 10000 - H * 1000 - I * 100 - J * 10);
L = b/10;
M = b - L*10;
cout << "百亿位:" << A << '\n'
<< "十亿位:" << B << '\n'
<< "亿位:" << C << '\n'
<< "千万位:" << D << '\n'
<< "百万位:" << E << '\n'
<< "十万位:" << F << '\n'
<< "万位:" << G << '\n'
<< "千位:" << H << '\n'
<< "百位:" << I << '\n'
<< "十位:" << J << '\n'
<< "个位:" << K << '\n'
<< "十分位:" << L << '\n'
<< "百分位:" << M << '\n';
return 0;
}