| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1372 人关注过本帖
标题:VC++6.0 非常诡异的数值精度问题
只看楼主 加入收藏
md00000000
Rank: 4
等 级:业余侠客
威 望:7
帖 子:105
专家分:289
注 册:2017-6-22
结帖率:44.44%
收藏
 问题点数:0 回复次数:3 
VC++6.0 非常诡异的数值精度问题
VC++6.0运行以下代码
程序代码:
float sum = 0;
for (int i = 0; i < 10000000; i++) {
    sum += (float)i;
}
printf("%f \n", sum);
printf("%d \n", sizeof(sum));

结果:
49999995000000.000000
4


把倒数两行互换一下
结果还会不一样

然而gcc和clang的结果均为:48714878025728.000000 (不管优化开了几档)

同样是float,怎么上世纪的东西精度还更高
搜索更多相关主题的帖子: VC++6.0 数值 精度 float sum 
2022-08-13 01:04
md00000000
Rank: 4
等 级:业余侠客
威 望:7
帖 子:105
专家分:289
注 册:2017-6-22
收藏
得分:0 
应该是老编译器优化策略问题,这个问题太过无趣了
2022-08-13 23:06
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:216
帖 子:1474
专家分:9035
注 册:2010-3-16
收藏
得分:0 
试试,记得改输出
double sum = 0;
2022-08-13 23:29
mature119
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:29
专家分:45
注 册:2021-12-7
收藏
得分:0 
double精度更高吧?
2022-09-03 19:53
快速回复:VC++6.0 非常诡异的数值精度问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017424 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved