首页 > 其他 > 详细

VS2010 编译器的数值计算bug

时间:2014-05-04 18:23:53      阅读:373      评论:0      收藏:0      [点我收藏+]

    最近调试程序,发现一个奇怪问题,在测试样例时,有些样例有时出错,有时正确。仔细检查了程序,发现不是程序错误,最后只好对错误的情况,进行记录,然后调试,结果发现一个让人吃惊的问题,VS2010的编译器对于数值计算会犯一些数值分析所说的常见错误,例如我用command window调试发现了如下问题

>? f0
1020.0
>? f1 + f2- fjob
1024.0
>? f1 + f2 - fjob - f0
4.0
>? f1 + f2- f0 - fjob 
0.0

    值得指出的是,f1、f2和fjob的数值很大,超过了1e10级别,但是在double.maxValue的范围之内,按理说,这个应该是不会出问题的,但在实际计算中确出问题了,也就是说两个大级别的数加减会出现错误,有意思的是,后面一个也是大级别的数值计算,但没有出现数值错误,这个让人很奇怪。因而,不难推知,这与VS2010的数值计算的方法有关系,因而我们在进行数值计算时,遇到大级别数值计算时,一定要非常小心和谨慎。有时的错误并不来自于所编程序本身,而是所依赖的开发环境和编译平台。

VS2010 编译器的数值计算bug,布布扣,bubuko.com

VS2010 编译器的数值计算bug

原文:http://blog.csdn.net/mao_kun/article/details/24957589

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!