标题:编程实现输出double的精确位数范围
取消只看楼主
lovegh
Rank: 5Rank: 5
来 自:图灵学院
等 级:职业侠客
威 望:3
帖 子:117
专家分:311
注 册:2015-1-23
结帖率:100%
已结贴  问题点数:10 回复次数:2 
编程实现输出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
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



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




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

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