数据类型用float无问题,double则结果错误,如何解决?

问题遇到的现象和发生背景

如果a数据类型用double不能正确显示结果,如果用float则无问题
编译器VS2022

问题相关代码,请勿粘贴截图
#include<stdio.h>

int main(void)
{
    double a;

    printf("Enter a floating-point value:");
    scanf_s("%f", &a);
    printf("\n fixed-point notation: %f", a);
    printf("\n exponential notation: %e", a);
    printf("\np notation: %a", a);

    return 0;
}
运行结果及报错内容

如图为数据类型设为double时结果

img

如图为数据类型为float时的结果

img

我的解答思路和尝试过的方法
我想要达到的结果
scanf_s("%f", &a)  

改成

scanf_s("%lf", &a)

double是双精度类型要用 %lf 输入 不能用 %f 输入 , 输出时用%f和%lf都可以

#include<stdio.h>

int main(void)
{
    double a;

    printf("Enter a floating-point value:");
    scanf_s("%lf", &a); // %f 改成 %lf
    printf("\n fixed-point notation: %lf", a);  // %f 改成 %lf
    printf("\n exponential notation: %le", a);  // %e 改成 %le
    printf("\np notation: %a", a);

    return 0;
}


如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632