根据输入的半径值,计算球的体积。
Input
输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。
Output
输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。
Sample Input
1
1.5
Sample Output
4.189
14.137
Hint
#define PI 3.1415927
问题分析:
题目计算球的体积,关键是要输出三位小数,最初想到用关键字int和double对小数进行控制,但是int型长度有限,输入半径大点的话数据就会溢出,小数点后的数位会逐渐减少,最后就没有小数了,所以用这种方法并不正确,要找其他办法。
程序说明:
调用setiosflags(ios::fixed)和setprecision(n),setiosflags(ios::fixed)是指固定的浮点显示,当setiosflags(ios::fixed)和setprecision(n)一起用时就输出n位小数,setprecision是指设置输出精度,当没有setiosflags(ios::fixed)时输出格式是数据的有效位数,例如
float a=123.666;
cout<<setprecision(5)<<a;
将输出123.67(他会四舍五入)
如果setprecision里的参数小于整数位数,将以指数形式输出,例如
float a=123.666;
cout<<setprecision(2)<<a;
将输出1.2e+002.
setiosflags(ios::fixed)和setprecision(n)包含在头文件#include中,setiosflags(ios::fixed)和setprecision(n)只需要设置一次就行了,因为这两个的作用范围是后续的对象,而不仅仅是对后一个对象。
程序实现:
#include "pch.h"
#include <iostream>
#include<iomanip>
using namespace std;
#define PI 3.1415927
int main()
{
double v, r;
while (cin >> r)
{
v = (PI * r*r*r * 4) / 3;
cout << setiosflags(ios::fixed)<<setprecision(3)<<v << endl;
}
}