/* Problem 38 */
#include <iostream>
using namespace std;
class abc {
double n;
public:
abc() { n = 67.5; cout << "1\n"; }
abc(double num) { set(num); cout << "2\n"; }
double get() const { cout<<"3\n"; return n; }
virtual void set(double num) {
if (num < 10)
n = 10;
else if (num > 100)
n = 100;
else
n = num;
cout << "4\n";
}
};
class def: public abc {
double m;
public:
def() { m = 6.2; cout << "5\n"; }
def(double num1, double num2): abc(num1) {
set(num2 - abc::get()); cout << "6\n"; }
double get() const {
cout << "7\n"; return m + abc::get(); }
void set(double num) {
if (num < 10 || 100 < num)
m = num;
else
m = 55;
cout << "8\n";
}
};
void do_it(abc &var, double num)
{ cout << var.get() << '\n';
var.set(num);
cout << var.get() << '\n';
}
int main()
{ abc x(45);
def y(2, 340);
cout.setf(ios::fixed);
cout.precision(3);
do_it(x, 200);
do_it(y, 253);
cout << x.get() << '\n';
cout << y.get() << '\n';
return 0;
}
使用上面的代码,我只是想知道上面的代码
中下面两行是什么 cout.setf(ios::fixed);
cout.precision(3);
请不要只是给我回答一些解释会非常感激,因为我正在为明天的期末考试做准备。
我搜索过,有些消息来源说它是设置标志,但实际上我没有得到它的概念以及它是如何工作的
答案 0 :(得分:13)
cout.setf(ios::fixed)
使cout打印浮点数具有固定的小数位数和
cout.precision(3)
将此数字设为3。
例如,如果你有一个
double f = 2.5;
然后
cout << f;
将打印
2.500
答案 1 :(得分:3)
有关如何格式化输出的精彩文档:Output formatting
当您尝试执行命令行UI时,它总是很有用。
答案 2 :(得分:1)
#include<iostream>
using namespace std;
int main(){
float large = 2000000000;
cout << large;
return 0;
}
输出将采用科学记数法:
2e+009
为了获得实际值,您应该使用cout.setf(ios::fixed)
#include<iostream>
using namespace std;
int main(){
cout.setf(ios::fixed);
float large = 2000000000;
cout << large;
return 0;
}
输出将与默认精度一样,浮点数为6。
2000000000.000000
您可以将上述代码中的精度设置为:
cout.precision(7);
.....
答案 3 :(得分:0)
它类似于包含操作库:
包括:
ERROR Interrupt: Interrupt
/home/usrname/.gem/jruby/1.9/gems/pry-0.10.3-java/lib/pry/pry_class.rb:98:in `load_traps'
然后使用以下功能
<iomanip>