博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
0.1 连续加 100 次后结果是多少 ???
阅读量:4053 次
发布时间:2019-05-25

本文共 540 字,大约阅读时间需要 1 分钟。

   上次同学问我这个问题的时候,刚刚开始我也蒙咯,其实我知道答案不是10,但是不好说,最后发现自己忘了最基本的C的知识,惭愧啊!~~~

 

   首先感谢  struggle_simon 对我的错误的指出,非常感谢!本文的例子确实有问题!其实我要传达的意思就是后面的文字总结,大家可以不要看例子!呵呵~~再次感谢博友的指点!希望大家能多多提出错误,小弟当及时改之、、、、

 

#include <stdio.h>

int main()

{
 double s = 0;

 for( int i = 0; i < 99; i++)

 {
    s += 0.1;
 }

 printf("%lf\n", s);

 return 0;
}

你可以验证,答案不会是10,而是接近10的数9.99...

 

这是由于:计算机是以二进制方式储存值的,它的能力有限,不能计算无限循环的小数,他只能迁就数据类型的     字节数,只能 取到无限接近的数...所以当我们在设计程序时需要得到的只是最准确的值。

 

现在明白了那一题面试题中比较小数的时候,最标准的并不是 ( .lf == .lf ),而是 在目标数据中取一个非常小的 “ 邻域”进行比较,只要再次 “ 邻域 ”内就是OK的( 当然此“ 邻域 ”很小 )...

转载地址:http://poaci.baihongyu.com/

你可能感兴趣的文章
《天亮了》韩红
查看>>
Windows CE下USB摄像头驱动开发(以OV511为例,附带全部源代码以及讲解) [转]
查看>>
出现( linker command failed with exit code 1)错误总结
查看>>
iOS开发中一些常见的并行处理
查看>>
iOS获取手机的Mac地址
查看>>
ios7.1发布企业证书测试包的问题
查看>>
如何自定义iOS中的控件
查看>>
iOS 开发百问
查看>>
Mac环境下svn的使用
查看>>
github简单使用教程
查看>>
如何高效利用GitHub
查看>>
环境分支-git版本管理
查看>>
uni-app 全局变量
查看>>
js判断空对象的几种方法
查看>>
java 不用递归写tree
查看>>
springboot2 集成Hibernate JPA 用 声明式事物
查看>>
fhs-framework jetcache 缓存维护之自动清除缓存
查看>>
SpringBoot 动态编译 JAVA class 解决 jar in jar 的依赖问题
查看>>
fhs-framework springboot mybatis 解决表关联查询问题的关键方案-翻译服务
查看>>
ZUUL2 使用场景
查看>>