在Dev C++中实现除法结果整数与小数部分拆分的问题
解决C语言除法取整数部分和小数部分的问题
先说说你现有代码里的几个问题:
main()应该写成标准的int main(),函数末尾要加return 0;- 你把
a/b同时赋值给c和d,那e = c - d结果必然是0,完全起不到获取小数部分的作用 - 用
%.0f格式化浮点数会自动四舍五入,所以5.5会被输出成6,这不是你要的截断式整数部分 - 变量
f没用到,属于冗余代码
正确的实现思路
要得到除法结果的整数部分和小数部分,核心逻辑很简单:
- 先计算
被除数 / 除数的完整结果 - 整数部分:对正数来说,直接把浮点数强制转换成
int类型,会自动截断小数部分(比如5.5转成int就是5) - 小数部分:用完整的除法结果减去整数部分即可
另外要注意:
- 必须判断除数是否为0,避免程序崩溃
- 输出小数部分时,用
%g格式符可以自动去掉末尾多余的0(比如0.5不会输出成0.500000)
修正后的代码
#include <stdio.h> int main() { float dividend, divisor, result, integer_part, decimal_part; // 输入被除数和除数 printf("请输入被除数和除数:"); scanf("%f %f", ÷nd, &divisor); // 判断除数是否为0 if (divisor == 0) { printf("除数不能为0!\n"); return 1; // 异常退出 } // 计算完整结果 result = dividend / divisor; // 获取整数部分(强制类型转换截断小数) integer_part = (int)result; // 获取小数部分 decimal_part = result - integer_part; // 输出结果,%g自动去掉末尾多余的0 printf("整数部分:%.0f\n", integer_part); printf("小数部分:%g\n", decimal_part); return 0; }
测试示例
输入11和2时,输出:
整数部分:5 小数部分:0.5
如果输入10和3,输出:
整数部分:3 小数部分:0.333333
内容的提问来源于stack exchange,提问作者Star
相关产品推荐
相关产品推荐

