C语言 浮点数从0递增至1.0的过程
#include <stdio.h>int main(void){float x;for (x = 0; x <= 1.0; x += 0.01){printf("x = %f\n", x);}return 0;
}
最后x的值不是1.0,而是0.999999。这是因为计算机不能保证其内部转换为二进制的浮点数的每一位都不发生数据丢失。所以在浮点数计算时,会存在误差并进行积累。
运行结果:
#include <stdio.h>int main(void){float x;for (x = 0.0; x != 1.0; x += 0.01){printf("x = %f\n", x);}return 0;
}
运行结果:
因为 在浮点数计算时,存在一定的误差,不能精确的得到1.0。所以这个程序会一直循环下去。
但是在实际的运算过程中 1 = 0.999999999…
证明:
例如:
1 / 3 = 0.3333333…
反过来:
3 * 0.33333333… = 1
再比如:
设 x = 0.9999999999999……,那么10x=9.99999999999……,得到
10x - x = 9
解得 x = 1
当使用整数循环至 1.0
#include <stdio.h>int main(void){int i;float x;for(i = 0; i <= 100; i++){x = i /100.0;printf("x = %f\n", x);}return 0;
}
运行结果:
该程序中的for语句,使变量 i 的值由 0 到 100递增。每循环一次,x都会变为变量 i 除以 100.0后所得的值,但是无法像浮点数一样精准的表示目标的实数值,程序通过每次重新求 x 的值,误差不再累积。
C语言 浮点数从0递增至1.0的过程相关推荐
- 浮点数c语言,C语言浮点数运算
C语言标准C89里规定了3种浮点数,float型.double型和long double型,常见的浮点型长度为float型占4个字节,double型占8个字节,long double型长度要大于等于d ...
- python语言浮点数可以不带小数部分吗_python 浮点数四舍五入需要注意的地方
本文主要分享基于python的数据分析三方库pandas,numpy的一次爬坑经历,发现并分析了python语言对于浮点数精度处理不准确的问题,并在最后给出合理的解决方案.如果你也在用python处理 ...
- c语言 准确赋值浮点数,C语言浮点数
浮点数的概念 浮点数也称小数或实数.例如,0.0.75.0.4.023.0.27.-937.198 都是合法的小数.这是常见的小数的表现形式,称为十进制形式. C语言中采用float和double关键 ...
- c语言浮点数内存存储解析和浮点数(double、float)如何定义NaN、正无穷(inf)、负无穷(-inf),以及如何判断是否是NaN
C语言浮点数存储方式 一. 浮点数内存存储方式 对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用 32bit,double数据占用 64bit.其实 ...
- 谈 JavaScript 浮点数计算精度问题(如0.1+0.2!==0.3)
不知道大家在使用JS的过程中有没有发现某些浮点数运算的时候,得到的结果存在精度问题:比如0.1 + 0.2 = 0.30000000000000004以及7 * 0.8 = 5.60000000000 ...
- 如何强制除法为浮点数? 除数一直舍入到0?
我有两个整数值a和b ,但是我需要它们在浮点数中的比率. 我知道a < b并且我想计算a / b ,所以如果我使用整数除法,我总是得到0,剩下a . 下面如何在Python中强制c为浮点数? c ...
- c语言vi运行编译文件,VC++6.0中如何编译运行及调试C语言程序文件.docx
VC++6. 0中如何编译运行调试C语言程序 1?启动VC++6. 0 (如下图) [5>R?*16 00 P"! tptl tub go□賦星糸理技件□中出融Fz " 口仍 ...
- C语言试题三之计算并输出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+…+(1+2^(0.5)+3^(0.5)+…+n^(0.5))
1 .题目 请编写函数function,它的功能是:计算并输出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+-+(1+2^(0.5)+3^(0.5)+-+n^(0.5)) ...
- VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序)
VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序) Visual C++ 6.0简称VC或者VC6.0,是微软1998年推出的一款C/C++ IDE,界面友好,调试功能强大.VC6. ...
最新文章
- vue全家桶+Koa2开发笔记(2)--koa2
- 4g内存只有1.6g可用_32位系统可用内存小 遇到32位系统内存小的解决方法
- 【题解】 CF718C Sasha and Array
- [转载]MIT牛人解说数学体系
- 【渝粤题库】国家开放大学2021春1078复变函数题目
- php 常用的知识点归集(下)
- 使用 Socket 通信实现 FTP 客户端程序
- switch 大气层双系统 进入破解系统 及安装nsp nsz 格式教程
- YOLO v5与双目测距结合,实现目标的识别和定位测距
- oracle18c 配置,0报错!Oracle 18C 完全安装指南及常见问题汇总
- 开关电源EMI整改实例(方法)。
- HTML及相关知识汇总
- SEO优化|如何让网站关键词排名快速提高
- 2021年上半年系统集成项目管理工程师上午试题参考解析(二)
- 安装Ubuntu的时候屏幕太小看不到下一步,点不到继续按钮
- Service类报错No qualifying bean of type ‘’ available: expected at least 1 bean which qualifies as auto
- ct扫描方式有哪些_医学影像技术(医学高级):CT必看题库知识点(考试必看) - 考试题库...
- Android茫茫半年求职路,终于斩获三个大厂offer,我总结了24家大厂100份面试题
- 困在家里的100个愿望
- 在线分享 Hosts 规则工具:Remote Hosts Server
热门文章
- NFS为lamp提供共享存储实践
- Linux-PAM PAM-MySQL的总结
- xxx while the managed IDbConnection interface was being used: Login failed for user xxx
- 开始学习RED HAT LINUX了
- sudo mount -o loop pm.img /mnt/floppy/mount 错误解决办法--mount 您必须指定文件系统的类型
- DIV+CSS星号(*)选择器
- golang中的并发服务器
- mysql创建表的时候显式申明存储引擎
- 贪心算法很简单:跳跃游戏
- redis之intset