有关整型变量计算的小细节(取整——坑)

本文探讨了在编程中使用整型变量进行计算时遇到的问题,特别是涉及除法运算时的取整现象。当整数除以整数,结果会被强制取整,如1/2=0, 5/2=2。作者提醒开发者注意这个细节,并提出解决方案,即通过在分母前加上1.0来确保至少有一个浮点数参与运算,从而避免不期望的取整行为。" 84851954,8222730,Ubuntu 18.04 安装 MySQL 5.7 教程,"['Linux', 'Ubuntu', 'MySQL']
摘要由CSDN通过智能技术生成

在这里插入图片描述
假设你定义了两个变量
doubule s; int n;
运算
scanf(“%d”,&n);
for( ; n ; n- -)
{
s=1/(n*(n+1));
}

你会发现得出的s永远都是0

很简单的道理但找错的时候很不容易关注到


即:

整型变量在计算的时候如果结果不为整数会强制取整(似乎是向下取整)
比如 1/2=0,5/2=2,8/5=1 等等

解决方法也很简单:
写成 s=1/(1.0n(n+1));就行
乘以 1.0 就好比强制转换成浮点型



以下是测试用例:

#include<stdio.h>
double fun(int n)
{
    double s=0;
    for(;n;n--)
        s+=1/(n*(n+1));
    return s;
}

void main()
{
    int n;
    scanf("%d",&n);
    printf("%f",fun(n));
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值