c++ Timer
来源:互联网 发布:w7旗舰版系统优化教程 编辑:程序博客网 时间:2024/05/13 06:50
发信人: zxiaoqiang (xiaoqiang), 信区: C_Cpp
标 题: c++中的bug
发信站: 兵马俑BBS (Sun Sep 6 22:55:54 2009), 本站(bbs.xjtu.edu.cn)
自己在使用c++过程中,遇见了一个自己一直想不明白的问题。在此请教一下各位大侠。我使用定时器每隔1秒让我的自变量加0.2,当自变量值大于等于6时停止定时器。当我把这个自变量的类型定义为float时,当定时器停下时,自变量的值已经变成了6.2,并不是6。但是当这个自变量的类型定义为double时,自变量的值最后就会定格在6。不知道这个数据类型怎么会影响这样一个过程。希望高手可以指点迷津。谢谢
发信人: phylips (星星||一年磨十剑), 信区: C_Cpp
标 题: Re: c++中的bug
发信站: 兵马俑BBS (Mon Sep 7 09:38:13 2009), 本站(bbs.xjtu.edu.cn)
这个不算c++的bug,问题在于浮点数的表示,具体参考ieee754标准
大体上来说是这样,0.2这个数很明显无法用有限二进制位表示
这样会存在一个误差,而且伴随着不断的加,误差会累积,而float double精度不同,这样就可能发生一些不同。问题不是出在6.2时,而是6.0。当你认为加到6理应是6.0的时候,根据结果,说明float看来是6.0少一点,比如是5.999999...之类的,所以还会继续加个0.2
浮点数大小比较有个基本原则,不能直接比较,估计你是在直接比较6.0,而通常是要用误差限定,定义一个允许误差ESP。
综上,bug是你出的,不是c++的;一般来说,bug通常都是你的。
- timer.c
- Timer(C#)
- timer.c
- timer.c
- timer.c
- C#Timer控件使用
- thttpd.Timer.c分析
- [C#] Timer计时器
- [C#] Timer计时器
- C#Timer类使用
- c语言 timer
- C#Timer 控件
- linux c timer
- Timer定时器(C++)
- (c#)timer控件
- C#中Timer组件用法
- C#中Timer组件用法
- C#中Timer组件用法
- Google App Engine中的数据存储(2)-概述
- c apache module 开发入门
- VS2008中关于“加载安装组件时遇到问题。取消安装”的解决
- 用 Zend_Application 实现多模块 (multi-modules) 及多模板 (multi-templates) 应用程序
- [转]利用javascript实现web页面刷新的方法
- c++ Timer
- 发布了一个原创软件--代码生成器
- Linux基金会对Linux提出新规划 - Moblin2囊括其中
- ROR汇集---aasm
- apache mod_perl实现 url rewrite
- 推荐一部不错的电影 《当幸福来敲门》
- SelectSingleNode方法中的xpath用法
- C#Form打开一个新窗口的同时关闭这个窗体
- 序列化与反序列化及其应用举例