鱼C论坛

 找回密码
 立即注册
查看: 862|回复: 4

[已解决]新人求助,关于c语言的简单问题

[复制链接]
发表于 2022-2-20 16:45:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 秋灯烬 于 2022-2-20 16:45 编辑

我是刚学的新人,写了一个代码,但是遇到了问题。
#include<stdio.h>
int main()
{
        float floating_point;

        printf("Enter a floating-point value:______\b\b\b\b\b\b ");
        scanf_s("%f",&floating_point);
        printf("\nfixed-point notation: %f \n", floating_point);
        printf("exponential notation: %e\n", floating_point);
        printf("p notation: %a\n", floating_point);
        printf("%.2f", floating_point);

        return 0;
}


随便定义了一个变量后,输入一个数值然后输出各种格式看看,就我粗浅的学识,认为double要比float范围大一些,不考虑什么字节大小之类的情况。

把float---->变成double应该没什么事

但是当我变了以后

Enter a floating-point value: 64.25

fixed-point notation: 64.250000
exponential notation: 6.425000e+01
p notation: 0x1.0100000000000p+6
64.25

也变成了

Enter a floating-point value: 64.25

fixed-point notation: -92559604856675321571320088795986877361484249085968211295338496.000000
exponential notation: -9.255960e+61
p notation: -0x1.ccccc42808000p+205
-92559604856675321571320088795986877361484249085968211295338496.00
就很疑惑,有大佬知道为什么吗
最佳答案
2022-2-20 16:56:53
因为double数据格式化输入要用%lf
Enter a floating-point value: 64.25

fixed-point notation: 64.250000
exponential notation: 6.425000e+001
p notation: 0x1.010000p+6
64.25
--------------------------------
Process exited after 31.32 seconds with return value 0
请按任意键继续. . .

#include<stdio.h>
int main()
{
        double floating_point;

        printf("Enter a floating-point value:______\b\b\b\b\b\b ");
        scanf_s("%lf",&floating_point);                             // 要用%lf 
        printf("\nfixed-point notation: %f \n", floating_point);
        printf("exponential notation: %e\n", floating_point);
        printf("p notation: %a\n", floating_point);
        printf("%.2f", floating_point);

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-20 16:56:53 | 显示全部楼层    本楼为最佳答案   
因为double数据格式化输入要用%lf
Enter a floating-point value: 64.25

fixed-point notation: 64.250000
exponential notation: 6.425000e+001
p notation: 0x1.010000p+6
64.25
--------------------------------
Process exited after 31.32 seconds with return value 0
请按任意键继续. . .

#include<stdio.h>
int main()
{
        double floating_point;

        printf("Enter a floating-point value:______\b\b\b\b\b\b ");
        scanf_s("%lf",&floating_point);                             // 要用%lf 
        printf("\nfixed-point notation: %f \n", floating_point);
        printf("exponential notation: %e\n", floating_point);
        printf("p notation: %a\n", floating_point);
        printf("%.2f", floating_point);

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-20 16:57:19 | 显示全部楼层
本帖最后由 ckblt 于 2022-2-20 17:25 编辑

把 scanf_s("%f",&floating_point);
改成 scanf_s("%lf",&floating_point);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-20 17:21:58 | 显示全部楼层
ckblt 发表于 2022-2-20 16:57
把 scanf_s("%f",&floating_point);
改成 scanf_s("%lf",&floating_point);

感谢大佬解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-20 17:22:30 | 显示全部楼层
大马强 发表于 2022-2-20 16:56
因为double数据格式化输入要用%lf

感谢大佬解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 12:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表