标题:关于double和%f,%lf的问题
只看楼主
凤凰院凶假
Rank: 2
来 自:春天里
等 级:论坛游民
威 望:1
帖 子:36
专家分:33
注 册:2016-12-22
结帖率:83.33%
已结贴  问题点数:15 回复次数:5 
关于double和%f,%lf的问题

我在撸这段代码时没考虑精度损失,于是就用了%f,然后在编译时无论输入什么值,输出的值都是固定点,而将%f改成%lf后就正常了。

我在想即使精度损失了,但应该还会有个变化的值;

程序代码:
#include<stdio.h>
#define JL 3.785
#define YL 1.609

int main()
{
    double mile;
    double gallon;
    double mile_per_gallon, liter, liter_per_100km, km;             //double 需要用%lf
    printf("Enter mile:\n");
    scanf("%f", &mile);
    printf("And gallon:\n");
    scanf("%f", &gallon);
    mile_per_gallon = mile / gallon;
    printf("mile per gallon=%f\n", mile_per_gallon);
    liter = JL*gallon;
    km = YL*mile;
    liter_per_100km=liter / (100.0 * km);
    printf("liter per 100km=%f", liter_per_100km);

    return 0;
}


%时任意输入两组值
1.

2.


改成%lf后就正常了


为什么产生这样的结果?
请大佬们指教一下。
搜索更多相关主题的帖子: double 输入 define printf scanf 
2017-10-06 15:48
凤凰院凶假
Rank: 2
来 自:春天里
等 级:论坛游民
威 望:1
帖 子:36
专家分:33
注 册:2016-12-22
得分:0 
第一行“固定点”----改成固定的值  


2017-10-06 15:51
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:15 
double类型输入输出是用"%lf"格式
2017-10-06 15:58
凤凰院凶假
Rank: 2
来 自:春天里
等 级:论坛游民
威 望:1
帖 子:36
专家分:33
注 册:2016-12-22
得分:0 
扎心了,基础还是要学好
2017-10-06 16:14
pydlq
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:129
专家分:488
注 册:2017-9-5
得分:0 
这个不是精度的问题。是存储的问题。scanf中用%f和%lf数据的存储方式不同。
2017-10-06 16:18
凤凰院凶假
Rank: 2
来 自:春天里
等 级:论坛游民
威 望:1
帖 子:36
专家分:33
注 册:2016-12-22
得分:0 
其实我最疑惑的是,输出的值一直没变,
2017-10-06 16:23



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




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

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