咦额340 2024-03-16 19:11 采纳率: 71.4%
浏览 13
已结题

c语言四舍五入第三位

我这样写的四舍五入第三位不对吗,为什么最后的结果只给我保留了整数位

img

  • 写回答

7条回答 默认 最新

  • 檀越@新空间 2024-03-16 19:11
    关注

    咦额340 晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    问题出在这一行代码上:

    h=((int)h)/100;
    

    这一行代码强制将h转换为int类型,并且将h除以100后再赋值给h,这样的处理方式只会保留整数位,而丢失小数位。

    要实现四舍五入保留到小数点后第三位,你可以按照以下步骤进行修改:

    1. 把h乘以1000,以保留到小数点后第四位。
    2. 加上0.5,以实现四舍五入的效果。
    3. 把h转换回double类型。
    4. 用整数除以1000,以把小数点后第四位及之后的位数去掉。

    下面是修改后的代码:

    #include <stdio.h>
    
    double fun(double h) {
        h = h * 1000 + 0.5;
        h = (int)h / 10.0;
        return h;
    }
    
    int main() {
        double a;
        printf("Enter a: ");
        scanf("%lf", &a);
        printf("The original data is %.3f\n", a);
        printf("The result %.3f\n", fun(a));
    
        return 0;
    }
    

    这样修改后,你将得到的结果会保留到小数点后第三位并进行四舍五入。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 创建了问题 3月16日