| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 636 人关注过本帖
标题:编程实现输出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
快速回复:编程实现输出double的精确位数范围
数据加载中...
 
   



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

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