码迷,mamicode.com
首页 > 其他好文 > 详细

VS2010 编译器的数值计算bug

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

标签:com   window   c   关系   value   编程   

    最近调试程序,发现一个奇怪问题,在测试样例时,有些样例有时出错,有时正确。仔细检查了程序,发现不是程序错误,最后只好对错误的情况,进行记录,然后调试,结果发现一个让人吃惊的问题,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

标签:com   window   c   关系   value   编程   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!