C++如何实现整数浮点数混合输入求和并按对应格式输出
C++ 实现自适应整数/浮点数求和输出的方案
核心思路
统一使用double类型接收输入,同时兼容整数和浮点数输入,输出时利用格式规则自动适配结果形式,省略无意义的尾部小数零。
方法1:C风格接口实现
使用%g格式符输出,该格式符会自动去掉尾部的小数零和多余的小数点,正好符合需求:
#include <stdio.h> #include <math.h> // 如需精度校验可引入 int main() { double a, b; // 用%lf读取双精度浮点数,兼容整数、浮点数输入 scanf("%lf %lf", &a, &b); double sum = a + b; // %g自动适配输出格式,%.9g可指定最多保留9位有效数字,按需调整 printf("%g\n", sum); return 0; }
方法2:C++ iostream接口实现
C++标准输出流默认的浮点输出规则就会自动省略尾部零和多余小数点,如需更高精度可手动设置有效位数:
#include <iostream> #include <cmath> using namespace std; int main() { double a, b; cin >> a >> b; double sum = a + b; // 可选:设置最多保留10位有效数字,默认是6位 cout.precision(10); cout << sum << endl; return 0; }
浮点数精度问题适配
如果涉及复杂运算可能出现浮点数精度误差(比如理论上的整数结果实际存储为2.999999999999或3.000000000001),可以增加误差范围判断后输出:
const double EPS = 1e-9; // 误差阈值,按需调整 if (fabs(sum - round(sum)) < EPS) { // 误差在允许范围内,判定为整数,转整型输出 cout << (long long)round(sum) << endl; } else { cout << sum << endl; }
内容的提问来源于stack exchange,提问作者Renato Rak
相关产品推荐
相关产品推荐

