注册 登录
编程论坛 C++教室

ios::fixed 和 ios::showpoint是什么东东?

yz29631 发布于 2007-07-22 16:07, 7723 次点击

源代码为
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
const double Cost = 10.50;
double budget, area, lengthSide;

cout << "Enter the amount please.";
cin >> budget;

area = budget/Cost;
lengthSide = sqrt(area);

cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
cout << "for a price of $" << budget << endl
<< "I can built you a doghouse" << "that is" << lengthSide
<< "feet";


return 0;
}

代码中有段:
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
哪位高手解释一下啊,多谢了。

[此贴子已经被作者于2007-7-27 10:19:33编辑过]

9 回复
#2
yz296312007-07-23 21:53

自己顶,怎么没人啊。

主要是ios::showpoint 和 ios::fixed看不懂啊

#3
yz296312007-07-26 18:36

再顶下,怎么没人啊?
那位兄弟给小弟解释下啊

#4
sunweihang2007-07-26 20:05
我还真见过,可是忘记了
我回去给你找书。
我记得那个好像是跟格式有关
#5
sunweihang2007-07-26 20:32

我运行了一下你的程序,可是出现的错误却是fatal error C1083: Cannot open include file: 'streambuf': No such file or directory
我不太明白,那个函数是你自己定义的吗?
或者是你自己定义的头文件?

#6
yz296312007-07-27 00:05
没有啊,头文件就是iostream,可能我代码拼写出错了吧,等我检查下
#7
yz296312007-07-27 00:10

#include <cmath>和#include <cmath>都是正确的吧.
程序中也只有一个main函数,还有个开方的sqrt数学函数

#8
yz296312007-07-27 00:12
以下是引用sunweihang在2007-7-26 20:05:55的发言:
我还真见过,可是忘记了
我回去给你找书。
我记得那个好像是跟格式有关

谢谢啊,等着您的回复,麻烦了

#9
medicihophy2007-07-30 13:34
ios::showpoint显示浮点数的小数点和后面的0
ios::fixed以定点格式显示浮点数
例子如下:
#include<iostream.h>
#include<iomanip.h>
void main()
{
double a[]={1.000111011,2.2,3,4444444.4,55555555};
cout.precision(6);
for(int i=0;i<5;i++)
{
//cout<<setiosflags(ios::fixed);
//cout<<setiosflags(ios::showpoint);
cout<<a[i]<<" ";
}
}
分别测试可以发现:
单用ios::showpoint可以按精度把后面的空白补0输出,但是超过却还是习惯性输出,例如数组后面两个将会以科学计数输出.
单用ios::fixed也是按精度把后面的空白补0输出,但是不管怎么样,都是按定点输出,即不会表示成科学计数。
忘了说了,precision既是设置精度的,6表示小数点后将最大显示6位。

[此贴子已经被作者于2007-7-30 13:36:22编辑过]

#10
yz296312007-07-31 15:30
以下是引用medicihophy在2007-7-30 13:34:18的发言:
ios::showpoint显示浮点数的小数点和后面的0
ios::fixed以定点格式显示浮点数
例子如下:
#include<iostream.h>
#include<iomanip.h>
void main()
{
double a[]={1.000111011,2.2,3,4444444.4,55555555};
cout.precision(6);
for(int i=0;i<5;i++)
{
//cout<<setiosflags(ios::fixed);
//cout<<setiosflags(ios::showpoint);
cout<<a[i]<<" ";
}
}
分别测试可以发现:
单用ios::showpoint可以按精度把后面的空白补0输出,但是超过却还是习惯性输出,例如数组后面两个将会以科学计数输出.
单用ios::fixed也是按精度把后面的空白补0输出,但是不管怎么样,都是按定点输出,即不会表示成科学计数。
忘了说了,precision既是设置精度的,6表示小数点后将最大显示6位。

讲的这么详细,谢谢啦。

1