| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1976 人关注过本帖
标题:关于以指数形式表示的浮点运算问题
只看楼主 加入收藏
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
收藏
已结贴  问题点数:20 回复次数:5 
关于以指数形式表示的浮点运算问题
以下这段代码中关于变量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
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:7 
怎么听得我稀里糊涂的呀,精确取值范围 是两个无关的概念。

先不谈C/C++。
在数学上,假如有个数是 3.33e+10,假设表示精度是 1e+8。
那么 3.33e+10 + 1 难道不是 33300000001,但因为表示精度只有 1e+8,所以其值仍然为 3.33e+10 ?
按照你“为什么不是在float的取值范围内加1呢”的说法,你是想因为表示精度只有 1e+8,所以 3.33e+10 + 1 应该变为 3.33e+10 + 1e+8 ?
2020-07-08 08:59
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
牧人马
Rank: 4
等 级:业余侠客
威 望:6
帖 子:49
专家分:229
注 册:2017-12-24
收藏
得分:7 
float在1e+8的时候已经不行了吧,输出一下显示a=b了
程序代码:
#include<iostream>
using namespace std;
int ch(float x)
{
    int count = 0;
    while (x > 1.0 && fabs(x - 1.0) > 1e-6)
    {
        x /= 10;
        count++;
    }
    return count;
}
int main(void)
{
     float a = 1.23e+8;
     float b = a+1;
    if (a < b && fabs(a - b) > 1e-6)
        cout << "a<b" << endl;
    else if (a > b&& fabs(a - b) > 1e-6)
        cout << "a>b" << endl;
    else
        cout << "a=b" << endl;
    cout <<"a位数="<< ch(a)<<endl;
    cout << "b位数="<<ch(b) << endl;
    cout << "b-a=" << b - a << endl;

}
2020-07-08 15:59
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:7 
有效数字意思是 前面几个数字有效
换一个角度就是 后面的数字无效
能理解到这个角度 那你的疑问就能得到解答了

https://zh.
2020-07-08 17:35
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
顺便说一下 这个完全和有没有使用指数形式没有关系
指数只是表示一个浮点数的方法而已
你换一个表示方法结果完全是一样的

https://zh.
2020-07-08 17:36
快速回复:关于以指数形式表示的浮点运算问题
数据加载中...
 
   



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

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