c++中输入一个很长的正实数,将它保留 10 位小数(要求四舍五入)后再输出,如果小数位不足 10 位,则在后面补 0 补足 10 位。
时间: 2024-09-16 19:05:36 浏览: 40
1025 保留12位小数的浮点数.cpp
在 C++ 中,你可以使用 `std::stringstream` 和 `std::fixed` 来实现这个功能。首先,你需要包含 `<sstream>` 头文件。然后,可以创建一个 `std::stringstream` 对象,并使用 `std::setprecision(10)` 设置小数点后的精度。接下来,读取用户输入并转换成 double 类型,接着处理四舍五入,最后再将结果转换回字符串并输出。
```cpp
#include <iostream>
#include <sstream>
// 函数原型声明
std::string round_and_pad_to_ten_decimal_places(double num);
int main() {
double input;
std::cout << "请输入一个正实数: ";
std::cin >> input;
// 使用函数处理并输出结果
std::cout << "保留 10 位小数的结果: " << round_and_pad_to_ten_decimal_places(input) << std::endl;
return 0;
}
// 实现函数
std::string round_and_pad_to_ten_decimal_places(double num) {
std::stringstream ss;
ss << std::fixed; // 固定小数点位置
ss.precision(10); // 设置精度为10
// 四舍五入
ss << std::round(num * 1000000000.0) / 1000000000.0;
// 如果小数位少于10位,在末尾添加0
if (ss.str().size() < 11) {
ss << std::setw(11) << std::setfill('0');
}
return ss.str();
}
```
在这个例子中,`std::round()` 函数用于四舍五入到最接近的整数,然后乘以1亿除以1亿是为了得到一个范围在[0, 1]内的数字,方便后续的填充。`std::setw()` 和 `std::setfill()` 则用来设置字符串的宽度并用指定字符填充。
阅读全文