为什么输入浮点数计算出现问题
原创2023年3月1日大约 2 分钟...约 475 字
#include <stdio.h>
int main() {
double n;
scanf("%lf",&n);
if(n >= 0){
// int a = n + 0.5;
n = n + 0.5;
printf("%d",n);
}else{
//int b = n - 0.5;
n = n - 0.5;
printf("%d",n);
}
//printf("%.0f",n);
return 0;
}
// 输入的任何小数,都出错。如 1.6
在C语言中,%d
是用于输出整数,而不是浮点数。此外,当将浮点数转换为整数时,C语言会将其向下取整为最接近的整数,而不是四舍五入。因此,需要先将浮点数加上或减去0.5,然后再强制转换为整数。
下面是修改后的代码:
#include <stdio.h>
int main() {
double n;
scanf("%lf", &n);
if (n >= 0) {
int a = (int)(n + 0.5);
printf("%d", a);
} else {
int b = (int)(n - 0.5);
printf("%d", b);
}
return 0;
}
在这个修改后的代码中,我们使用了强制类型转换将浮点数转换为整数,同时将其四舍五入到最近的整数。
公众号:AI悦创【二维码】
AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Linux、Web、Sql」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh
你认为这篇文章怎么样?
- 0
- 0
- 0
- 0
- 0
- 0