为何我的C++米转英尺程序输出结果异常?
问题原因分析与解决方案
嘿,我来帮你拆解下这个问题的根源,顺便给你修正后的代码~
核心问题:整数类型的截断行为
你代码里的meters和feet都被声明成了int(整数类型),这是导致结果错误的关键:
- 当你输入
3.25时,cin会自动截断小数部分,只把整数3存入meters变量 - 之后计算
3 * 3.279,结果自然是9.837,和你看到的一致
另外还有个小问题:你在读取用户输入之前就执行了feet = 3.279 * meters;,这时候meters还没被赋值,是一个随机的垃圾值,不过好在你后续输出时没用到这个变量,所以没影响最终结果,但这是个多余且不规范的写法。
修正后的代码
把变量类型换成double(双精度浮点类型),就能完美保留小数部分,得到正确结果:
#include <iostream> using namespace std; int main() { double meters; cout << "Enter Meters to be converted to feet: "; cin >> meters; double feet = 3.279 * meters; cout << feet << " feet " << endl; return 0; }
验证结果
当你输入3.25时,计算3.25 * 3.279 = 10.65675,程序会输出正确的结果。
内容的提问来源于stack exchange,提问作者shammy23
相关产品推荐
相关产品推荐

