| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 800 人关注过本帖
标题:C语言强制类型转换 为什么 完整结果是1.83333333333333333333 他只取了前6位 ...
只看楼主 加入收藏
tianxiayehan
Rank: 1
等 级:禁止发言
帖 子:47
专家分:4
注 册:2011-8-31
结帖率:50%
收藏
 问题点数:0 回复次数:10 
C语言强制类型转换 为什么 完整结果是1.83333333333333333333 他只取了前6位1.833333
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: C语言 
2011-09-02 09:58
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 楼主 tianxiayehan
……

[ 本帖最后由 A13433758072 于 2011-9-2 12:35 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-02 10:19
晓云林
Rank: 2
等 级:论坛游民
帖 子:46
专家分:35
注 册:2011-8-29
收藏
得分:0 
float型默认小数点后输出是6位吧,可以自己设置
2011-09-02 11:12
edwardflee
Rank: 4
等 级:业余侠客
帖 子:145
专家分:234
注 册:2011-7-27
收藏
得分:0 
试了一下 好像显示不了那么多位呢

改成:
程序代码:
# include <stdio.h>

int main(void)
{
    int i;
    float sum = 0;

    for (i=1; i<=3; ++i)
    {
        sum = sum + 1 / (float)(i);
    }
    printf("sum = %.20f\n", sum);
   
    return 0;
} 
结果是:sum = 1.83333337306976320000

改成
程序代码:
# include <stdio.h>

int main(void)
{
    int i;
    double sum = 0;

    for (i=1; i<=3; ++i)
    {
        sum = sum + 1 / (double)(i);
    }
    printf("sum = %.20lf\n", sum);
   
    return 0;
} 
结果是:sum = 1.83333333333333330000

学C的秘诀=每天都来泡论坛
2011-09-02 11:52
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
浮点型默认是输出6位小数吧!
2011-09-02 13:11
短暂的生命
Rank: 1
等 级:新手上路
帖 子:8
专家分:9
注 册:2011-8-31
收藏
得分:0 
这是因为float型的有效数字为7位,double型的有效数字为15~16位,long double型的有效数字为 18~19位,超过的范围都不能正确显示.
2011-09-04 12:04
edwardflee
Rank: 4
等 级:业余侠客
帖 子:145
专家分:234
注 册:2011-7-27
收藏
得分:0 
回复 6楼 短暂的生命
请教long double怎么用?试了试,好像跟double的没有区别?
输出还是sum = 1.83333333333333330000
程序代码:
# include <stdio.h>

int main(void)
{
    int i;
    long double sum = 0;

    for (i=1; i<=3; ++i)
    {
        sum = sum + 1 / (long double)(i);
    }
    printf("sum = %.20Lf\n", sum);
  
    return 0;
} 


学C的秘诀=每天都来泡论坛
2011-09-06 08:58
我不想我是谁
Rank: 2
来 自:浙江
等 级:论坛游民
帖 子:19
专家分:12
注 册:2011-8-12
收藏
得分:0 
我也理解了…

没啥好说的。
2011-09-06 09:07
fedcab123
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:100
注 册:2011-9-3
收藏
得分:0 
....你可以设成很长很长的……
2011-09-06 09:13
lin471306489
Rank: 4
等 级:业余侠客
帖 子:136
专家分:247
注 册:2011-8-16
收藏
得分:0 
# include <stdio.h>
 
int main(void)
 {
     int i;
   long float sum = 0;//加long
 
    for (i=1; i<=3; ++i)
     {
         sum = sum + 1 / (long float)(i);
     }
     printf("sum = %.20lf\n", sum);
   
     return 0;
 }
2011-09-06 10:57
快速回复:C语言强制类型转换 为什么 完整结果是1.83333333333333333333 他只取了 ...
数据加载中...
 
   



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

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