| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 636 人关注过本帖
标题:编程实现输出double的精确位数范围
只看楼主 加入收藏
lovegh
Rank: 5Rank: 5
来 自:图灵学院
等 级:职业侠客
威 望:3
帖 子:117
专家分:311
注 册:2015-1-23
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
编程实现输出double的精确位数范围
用编程的方式实现double的精确位数范围。不使用系统自带宏。
本来的思路是这样的,通过枚举精确位数,直到最大出错时候就可直到。
但是问题是,我这样写怎么貌似可以精确到无数位啊,求解决办法。
程序代码:
#include <stdio.h>
#define MAXN 100
int main() {
    
    double a = 0.0;
    char str[10] = {0};
    int i = 0;
    for (;i < MAXN;i++) {
        sprintf(str, "%%.%dlf\n", i);
        printf(str,a);
    }
    
    return 0;
}
搜索更多相关主题的帖子: double 
2015-01-30 00:07
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:0 
不是这样测试的吧

我不是砖家,要努力成为砖家。
2015-01-31 11:14
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
整型 可以这样

int i=1;
    int j;
    while(1)
    {
        j=i;
        i++;
        if(i<j)
        {
            printf("在本机CPU下 INT类型最大值是%d\n",j);
            break;
        }
    }

DO IT YOURSELF !
2015-01-31 12:34
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:5 
回复 楼主 lovegh
应该是2^63-1=9223372036854775807,大于这个数之后就用指数表示,就不精确了。
2015-01-31 13:36
lovegh
Rank: 5Rank: 5
来 自:图灵学院
等 级:职业侠客
威 望:3
帖 子:117
专家分:311
注 册:2015-1-23
收藏
得分:0 
回复 4楼 xzlxzlxzl
不是吧,double就只能精确到小数点后15到16位吧,加上浮点运算有误差,之后的都是不太准确的,你可以用1 / 6试试,应该是无限循环小数,但double精确度没这么高。100位都不到

别老是写代码,要多陪妹子,多了解老婆大人,血淋淋的教训。
2015-01-31 16:22
lovegh
Rank: 5Rank: 5
来 自:图灵学院
等 级:职业侠客
威 望:3
帖 子:117
专家分:311
注 册:2015-1-23
收藏
得分:0 
回复 3楼 wp231957
我知道你的意思,运用加法溢出来判断。但是这样不更简单和通用
程序代码:
    int bits = (sizeof(int) << 3 ) - 1;
    printf("max =  %d\n", (1 << bits) - 1);
    printf("min =  %d\n", -(1 << bits));

别老是写代码,要多陪妹子,多了解老婆大人,血淋淋的教训。
2015-01-31 16:24
快速回复:编程实现输出double的精确位数范围
数据加载中...
 
   



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

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