【原创,谢绝转载】C++自学笔记——不要使用浮点数作为循环计数变量

本文通过实例分析了在C++中使用浮点数作为循环计数变量可能导致的误差问题,解释了浮点数存储引起的精度误差如何在循环累加过程中被放大,导致计算结果偏离预期。结论是推荐使用整数类型作为循环计数变量。
摘要由CSDN通过智能技术生成

本篇博文相关创意收录在《C++自学笔记(上册)面向过程》第7章习题三-79。这本书暂时还未出版,因此与该书有关的任何图片、表格、代码、文章(包括本篇)都谢绝转载。

以下只由源文件sumOfIntegers.cpp构成的程序1对于初学者来说应该不难。

//sumOfIntegers.cpp
#include <iostream>    //cout, endl
using std::cout;    using std::endl;
int main()
{
    int sum=0, lastAdded=0;    //和值,最后被加入的数值
    for(int value=1; value<=100; value+=1)
    {
        sum+=value;
        lastAdded=value;
    }
    cout<<"sum is "<<sum<<endl;
    cout<<"last added is "<<lastAdded<<endl;
    return 0;
}

该程序功能是:计算前100个正整数之和,期望得到和值为5050,期望最后被加入的数值应该是正整数100。执行结果与期望结果一致:

曾经有这么一个好奇的同学,将该程序所有数据都缩小为原来的百分之一,同时将所有数据类型都由整数类型改为单精度浮点数类型,结果变为怎样呢?试试以下只由源文件sumOfSingerFloatings.cpp构成的程序2:

//sumOfSingleFloatings.cpp
#include <iostream>    //cout, endl
using std::cout;    using std::endl;
int main()
{
    float sum=0.0f, lastAdded=0.0f;    //和值,最后被加入的数值
    for(float value=0.01f; value<=1.0f; value+=0.01f)
    {
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值