Visual Studio中C#除法程序无法输出小数运算结果问题求助
问题根因
C# 语法规则中,两个int(32位整数)类型的操作数执行除法运算时,默认走整数除法逻辑,运算结果会直接截断舍弃小数部分,仅返回整数商,这就是代码无法输出带小数正确结果的核心原因。
修复方案
- 更换结果存储类型:不要使用
int类型存储除法结果,普通计算场景用double即可,涉及金额等高精度十进制计算场景选用decimal - 触发浮点除法逻辑:做除法运算前,显式将至少一个参与运算的整数转为对应小数类型,只要除法运算符两边有一个操作数是小数类型,就会自动执行保留小数位的浮点除法
- 补充基础校验:增加除数非0判断、输入内容合法性判断,避免用户输入0作为除数、输入非整数字符时程序直接崩溃
修正后可运行代码
Console.WriteLine("This is a division app"); Console.Write("Please input a whole number(maximum is 2,147,483,647): "); int number1 = Convert.ToInt32(Console.ReadLine()); Console.Write("Please input another whole number(maximum is 2,147,483,647): "); int number2 = Convert.ToInt32(Console.ReadLine()); // 校验除数不能为0 if (number2 == 0) { Console.WriteLine("Error: Divisor cannot be 0, please restart the program."); return; } // 显式将被除数转为double类型,触发浮点除法,结果用double类型存储 double result = (double)number1 / number2; Console.WriteLine("Is " + result + " your number?");
如果需要控制输出的小数位数,可以对结果做格式化处理,比如要固定保留2位小数,输出语句可以改成
Console.WriteLine($"Is {result:0.00} your number?");。举个测试用例:输入5和2时,原代码会返回2,修正后会正确返回2.5。
内容的提问来源于stack exchange,提问作者Zawaad
相关产品推荐
相关产品推荐

