C++ 实现小数四舍五入:含代码及进位处理注意点
```cpp #include <iostream> #include <string> // 对小数进行四舍五入操作 std::string roundNumber(const std::string& numStr, int m) { // 找到小数点的位置 size_t dotPos = numStr.find('.'); // 如果需要保留的位数等于小数点后的位数,直接返回原数 if (m == static_cast<int>(numStr.length() - dotPos - 1)) { return numStr; } // 从第 m+1 位开始检查是否需要进位 if (numStr[dotPos + m + 1] >= '5') { std::string result = numStr.substr(0, dotPos + m + 1); int carry = 1; // 从第 m 位开始向前处理进位 for (int i = dotPos + m; i > dotPos; --i) { if (carry == 0) { break; } if (result[i] == '9') { result[i] = '0'; } else { result[i]++; carry = 0; } } // 如果整数部分需要进位 if (carry == 1) { result = "1" + result.substr(0, dotPos + 1); } return result; } // 不需要进位,直接截取前 m 位小数 return numStr.substr(0, dotPos + m + 1); } int main() { int n; std::string x; int m; // 读取小数点后的数字个数 std::cin >> n; // 读取小数 std::cin >> x; // 读取需要保留的位数 std::cin >> m; // 进行四舍五入操作 std::string result = roundNumber(x, m); // 输出结果 std::cout << result << std::endl; return 0; } ``` 额外注意的逻辑点 1. 处理进位时,要考虑到连续进位的情况,例如 `0.999` 保留 2 位小数时,需要从最后一位开始依次进位。 2. 当整数部分需要进位时,要正确处理整数部分的变化,例如 `0.99` 保留 0 位小数时,结果应该是 `1`。 3. 要确保输入的小数格式正确,即小数点后有 `n` 位数字,并且 `m` 不超过 `n`。 ######[AI写代码神器 | 598点数解答 | 2025-07-05 15:32:23]
- Java 实现:从点类到圆类,计算圆心坐标(50,30)、半径 4 的圆周长与面积(字节豆包 | 246点数解答 | 2024-11-11 16:36:30)339
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)349
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)468
- 替雷利珠单抗致免疫相关性糖尿病:病例报道与机制探讨,为临床用药敲响警钟( | 164点数解答 | 2024-10-11 14:52:52)269
- Python:轻松提取10.0到99.0小数的整数部分(字节豆包 | 136点数解答 | 2026-01-11 19:23:18)43
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)319
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)469
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)359
- 帮胖虎小夫70周年友谊派对分派,精准计算两种输出方案!(阿里通义 | 672点数解答 | 2024-10-20 21:46:18)203
- C++ 助力胖虎小夫 70 周年派对派分难题!精准输出派的分配大小(阿里通义 | 523点数解答 | 2024-10-20 21:46:33)176
- C++ 助力胖虎小夫 70 周年友谊派对:精准分派难题迎刃而解!(阿里通义 | 570点数解答 | 2024-10-20 21:47:23)217
- C++ 实现小数四舍五入:含代码及进位处理注意点(字节豆包 | 598点数解答 | 2025-07-05 15:32:23)260