- C++
C++保留几位小数 去掉保留几位小数教程
- 2025-8-18 11:43:53 @
在C++中,我们可以使用输入输出流控制符来保留或去掉小数位数。下面详细介绍两种常用方法:
1. 使用setprecision
控制小数位数
setprecision
是<iomanip>
头文件中的函数,可以设置小数的精度。
#include <iostream>
#include <iomanip> // 包含setprecision等函数
using namespace std;
int main() {
double num = 3.1415926535;
// 保留2位小数
cout << "保留2位小数: " << fixed << setprecision(2) << num << endl;
// 不保留小数(取整数部分)
cout << "不保留小数: " << fixed << setprecision(0) << num << endl;
// 恢复默认输出格式
cout << "默认格式: " << setprecision(6) << num << endl;
return 0;
}
输出结果:
保留2位小数: 3.14
不保留小数: 3
默认格式: 3.14159
2. 使用类型转换去掉小数(强制转换)
如果需要完全去掉小数部分(不是四舍五入显示),可以使用强制类型转换:
#include <iostream>
using namespace std;
int main() {
double num = 3.99999;
// 强制转换为int,直接截断小数部分
int intNum = (int)num;
cout << "截断小数后: " << intNum << endl; // 输出3
return 0;
}
关键点说明:
fixed
与setprecision
配合使用时,setprecision(n)
表示保留n位小数- 不使用
fixed
时,setprecision(n)
表示保留n位有效数字 - 强制类型转换会直接截断小数部分,而不是四舍五入
- 记得包含
<iomanip>
头文件才能使用setprecision
根据实际需求选择合适的方法,如果需要四舍五入保留小数就用setprecision
,如果需要直接去掉小数部分就用强制类型转换。
1 条评论
-
admin SU @ 2025-8-18 11:45:20
在C++中,"去掉保留的小数位数"通常有两种理解:一是将已经设置的小数位数格式恢复为默认状态,二是完全去除小数部分(只保留整数)。下面分别介绍这两种情况的实现方法:
方法1:恢复默认输出格式(取消固定小数位数)
当使用
fixed
和setprecision(n)
设置了固定小数位数后,可以通过以下方式恢复默认输出格式:#include <iostream> #include <iomanip> // 需包含此头文件 using namespace std; int main() { double num = 123.456789; // 先设置保留2位小数 cout << "保留2位小数: " << fixed << setprecision(2) << num << endl; // 取消固定小数位数,恢复默认格式(默认显示6位有效数字) cout << "恢复默认格式: " << setprecision(6) << num << endl; // 也可以用默认的cout输出(不加任何控制符) cout << "直接输出(默认): " << num << endl; return 0; }
输出结果:
保留2位小数: 123.46 恢复默认格式: 123.457 直接输出(默认): 123.457
说明:
fixed
是"固定小数位数"的开关,一旦设置后会持续生效- 取消时无需专门关闭
fixed
,只需再次使用setprecision(n)
且不配合fixed
,此时n
表示"有效数字位数"(默认6位)
方法2:完全去除小数部分(只保留整数)
如果需要将数值本身的小数部分去掉(不是单纯修改显示格式),有两种常用方式:
方式A:强制类型转换(直接截断小数)
将浮点数强制转换为整数类型(如
int
),会直接截断小数部分(不四舍五入):#include <iostream> using namespace std; int main() { double num1 = 5.999; double num2 = 3.1415; // 强制转换为int,直接去掉小数 int res1 = (int)num1; // 结果为5(不是6) int res2 = (int)num2; // 结果为3 cout << "去掉小数后(num1): " << res1 << endl; cout << "去掉小数后(num2): " << res2 << endl; return 0; }
输出结果:
去掉小数后(num1): 5 去掉小数后(num2): 3
方式B:使用
floor
或ceil
函数(数学处理)如果需要按数学规则处理(向下取整或向上取整),可以使用
<cmath>
头文件中的函数:#include <iostream> #include <cmath> // 需包含此头文件 using namespace std; int main() { double num = 5.999; // floor:向下取整(去掉小数,结果不大于原数) int floor_res = (int)floor(num); // 结果为5 // ceil:向上取整(去掉小数,结果不小于原数) int ceil_res = (int)ceil(num); // 结果为6 cout << "floor向下取整: " << floor_res << endl; cout << "ceil向上取整: " << ceil_res << endl; return 0; }
输出结果:
floor向下取整: 5 ceil向上取整: 6
总结
- 若要恢复输出格式(取消固定小数位数):使用
setprecision(6)
(默认6位有效数字) - 若要完全去除数值的小数部分:
- 直接截断用
(int)浮点数
- 数学取整用
floor()
或ceil()
(需包含<cmath>
)
- 直接截断用
根据实际需求选择合适的方法即可。
- 1