| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 489 人关注过本帖
标题:float 的精度变化了
只看楼主 加入收藏
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
结帖率:71.43%
收藏
已结贴  问题点数:10 回复次数:6 
float 的精度变化了
谁帮忙运行一下下面这段代码?
程序代码:
#include <stdio.h>
int main(){
    float a;
    float b;
    scanf("%f",&a);
    printf("%f\n",a);
    scanf("%f",&b);
    printf("%f\n",b);
    return 0;
}


我运行的结果:输入51.2时 输出是 51.200001 而不是51.200000。请问这是哪里的问题?
搜索更多相关主题的帖子: include return 
2013-10-22 20:41
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:5 
看看书上数据类型部分。
2013-10-22 21:01
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:0 
回复 2楼 tlliqi
#include <stdio.h>
int main(){
   
    float a;
    scanf("%f",&a);
    printf("%f\n",a);
    return 0;

}
2013-10-22 21:11
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:0 
回复 2楼 tlliqi
咱们看上面这句
2013-10-22 21:12
大手
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2013-10-22
收藏
得分:5 
没有问题啊,你输时用空格试试
2013-10-22 21:31
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:0 
回复 5楼 大手
你输入的是哪个数?你输入51.2 或者 44.8 看下结果
2013-10-22 21:34
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:0 
咱们再来看下下面的语句:
程序代码:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
int main(){
    int choose;
    double sx;
    float m,x;             
    printf("请输入数据:\n");
    printf("x= ");
    scanf("%f",&x);
    printf("确认x = %f\n\n",x);
    printf("s= ");    
    scanf("%f",&sx);
    printf("确认s= %f\n\n",sx);     //输出乱了
    bool findResult = false;         //控制循环
    srand(time(NULL));                //随机数种子
    printf("正在计算结果...\n");
    while(!findResult){
        float rx = (float)(rand())/(RAND_MAX+1);
        printf("%f\t",rx);
        m = -1 + rx*(100+1);
        printf("%f\t",m);
        double molecular = sinh((m * x)) + sinh(m * (120 - x)); //分子
        printf("%f\n",molecular);
        double denominator = sinh((m * 120));                   //分母
        printf("%f\n",denominator);
        if(fabs(sx-(molecular/denominator))<0.000001){     //如果计算结果等于输入的sx的值则输出
            printf("计算结果:s = %f\n molecular/denominator = %f",sx,molecular/denominator);
            findResult = true;
            printf("\n\n计算得结果:m = %f\n\n",m);
//            choose = chooseWindow();
//            printf("%d",choose);
        }
    }
    return choose;
}
当我输入(x)0 、(sx)51.2 后,我的眼里只有乱码了
2013-10-22 21:58
快速回复:float 的精度变化了
数据加载中...
 
   



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

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