关于强制转化为double类型的数据的计算精度

本文通过实例代码展示了在计算分数序列前N项和时,使用int类型强制转换为double类型与直接使用double类型进行运算的精度差异。在高精度计算中,int到double的转换可能导致结果不准确。因此,建议在涉及高精度浮点数运算的编程中,始终使用double类型来确保计算的精确性。
摘要由CSDN通过智能技术生成

使用double类型的数据进行浮点数运算和强制int类型数据转化为double类型的数据再进行运算是有差别的,在计算分数序列前N项和时;两个计算方式的结果在高精度范围内出现了明显的差异,

左边的是强制int类型的数据转化后计算的,可见在高精度时明显不准确,分数是不可能为负的,所以在编程中涉及到高精度的浮点数运算时;应该把涉及到的数据都设置为double类型,避免此类错误。附上题目及代码:

题目:

代码:(强制int 类型数据转化)

#include<stdio.h>
int main()
{
    int k;
    scanf("%d",&k);
    int n=1,m=1,t;
    double e,sum;
    
    
        for(int i=0;i<k;i++)
    {
        t=n;
        n=n+m;
        m=t;
        
        e=(double)n/m;
        sum=sum+e;
        printf("%.15lf\n",e);
    }
    printf("%.2lf",sum);
    
    
}

代码:(使用double类型数据计算)

#include<stdio.h>
int main()
{
    int k;
    scanf("%d",&k);
    double n=1,m=1,t;
    double e,sum;
    
    
        for(int i=0;i<k;i++)
    {
        t=n;
        n=n+m;
        m=t;
        
        e=n/m;
        sum=sum+e;
        printf("%.15lf\n",e);
    }
    printf("%.2lf",sum);
    
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值