赞
踩
- //设置浮点数按定点方式输出
- std::cout.setf(std::ios_base::fixed, std::ios_base::floatfield);
- //设置浮点数按科学计数方式输出
- std::cout.setf(std::ios_base::scientific, std::ios_base::floatfield);
- //设置浮点数按默认方式输出
- std::cout.setf(0, std::ios_base::floatfield);
设置了cout的浮点数输出方式后,会一直影响cout以后的浮点数输出方式,直到设置了新的输出方式。
在C++中,如果没有指定输出方式(定点或科学计数法)浮点数会根据输出的值自动选择输出方式。浮点数的默认输出精度包含6个有效数字(小数点与末尾的 0 不占用6个精度的位置),小数点后末尾的 0 不输出。
语法:cout.precision(精度值),如设置精度为9,使用 cout.precision(9);
设置了cout的浮点数输出精度后,会一直影响cout以后的浮点数输出精度,直到设置了新的输出精度。
- #include <iostream>
-
- int main()
- {
- using std::cout;
- using std::endl;
-
- //默认输出方式,整数位数长为6,等于默认精度6,按定点法输出:123457
- //最后一位四舍五入
- cout << 123456.789 << endl;
-
- //设置精度为 8,输出方式没有变,还是默认的自动选择输出方式
- //此处精度并不是小数点后8位,而是8个有效数字
- cout.precision(8);
-
- //默认输出方式:整数位数长为6,小于默认精度8,小数位数为8-6=2
- //按定点法输出:123456.79,最后一位四舍五入
- cout << 123456.789 << endl;
-
- //默认输出方式,因为整数部分为0,所以整数部分的数位长度为0,小于默认精度8
- //小数位数为8-0=8按定点法输出:0.12345679
- cout << 0.123456789 << endl;
-
- //设置精度为 4,输出方式没有变,还是默认的自动选择输出方式
- //此处精度并不是小数点后4位,而是4个有效数字
- cout.precision(4);
-
- //默认输出方式:整数部分的数位长度为5,大于设置精度4
- //按科学计数法输出:1.235e+004(e后面部分,在不同编译器下的输出可能不同)
- cout << 12345.6789 << endl;
-
- //用old变量保存当前正在使用的输出方式(也就是默认输出方式),并设置输出方式为定点方式,
- std::ios_base::fmtflags old = cout.setf(std::ios_base::fixed, std::ios_base::floatfield);
-
- //输出方式为定点输出方式,精度表示小数点后的位数,精度长是前面设置的4
- //按定点法输出:1234.5679
- cout << 1234.56789 << endl;
-
- //设置输出方式为科学计数法方式,精度表示小数点后的位数,精度长是前面设置的4
- cout.setf(std::ios_base::scientific, std::ios_base::floatfield);
-
- //按科学计数法输出:1.2346e+003(不同编译器下的输出可能不同)
- cout << 1234.56789 << endl;
-
- //按科学计数法输出:整数部分为0,则将整数部分设置成大于0且小于10的数,
- //输出1.2346e-002
- cout << 0.0123456789 << endl;
-
- //恢复默认输出方式:自动选择输出方式,但是精度不变,仍然为前面设置的4
- //但是现在的精度表示“有效数字个数”
- cout.setf(old, std::ios_base::floatfield);
-
- //整数部分长为7,大于精度4,选择科学计数法输出:1.235e+006
- cout << 1234567.89<< std::endl;
-
- getchar();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。