标题:关于以指数形式表示的浮点运算问题
取消只看楼主
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
已结贴  问题点数:20 回复次数:1 
关于以指数形式表示的浮点运算问题
以下这段代码中关于变量d。书上说是将3.33e+23左边第24个数加上1。
但问题是变量c是float类型,应该无法精确到第24位才对,所以怎么会将3.33e+23左边第24个数加上1呢?
为什么不是在float的取值范围内加1呢?这样最终的打印结果应该是1才对。可是结果却打印0。
程序代码:
#include<iostream>
int main(){
    using namespace std;
    float c=3.33e+23;
    float d=c+1;
    cout<<"d-c="<<d-c; 
    return 0;
}
搜索更多相关主题的帖子: float 浮点 指数 运算 形式 
2020-07-07 22:37
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
以下是引用rjsp在2020-7-8 08:59:03的发言:

怎么听得我稀里糊涂的呀,精确 和 取值范围 是两个无关的概念。

先不谈C/C++。
在数学上,假如有个数是 3.33e+10,假设表示精度是 1e+8。
那么 3.33e+10 + 1 难道不是 33300000001,但因为表示精度只有 1e+8,所以其值仍然为 3.33e+10 ?

由于表示精度是1e+8。表示精度是9位数,所以应当在第9位加1,那么 3.33e+10 + 1 应该是 333000001,也就是将333000000+1。而不是33300000000+1。
我是这样理解的。
2020-07-08 11:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502432-1-1.html




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

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