跳至主要內容

为什么输入浮点数计算出现问题

AI悦创原创C FAQC FAQ大约 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

方法一:QQopen in new window

方法二:微信:Jiabcdefh

上次编辑于:
贡献者: AndersonHJB
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度