| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2046 人关注过本帖
标题:关于以指数形式表示的浮点运算问题
取消只看楼主 加入收藏
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
快速回复:关于以指数形式表示的浮点运算问题
数据加载中...
 
   



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

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