如何输出long double?
首先long double是C99引入的,但是如何printf格式化一个long double的数据的呢?
scanf一个double数据,是%lf,printf一个float或者double都是%f。
但是输出一个long double是什么格式呢?
这个时候,我们需要c标准:
7 The length modifiers and their meanings are: 第七节,长度修饰符及其含义是:
截取需要部分,
指定以下d,i,o,u,x或X转换说明符适用于
long int或unsigned long int参数; n 转换说明符适用于指向long int参数的指针; c 转换说明符适用于wint_t参数; s 转换说明符适用于指向wchar_t参数的指针; 或对以下a,e,e,E,f,F,g或G转换没有影响
由于 ll与l描述很相近,不再翻译。
再看大写的L:
指定以下a,A,e,E,f,F,g或G转换说明符适用于long double参数。
如果一个长度修饰符出现在除上述指定的任何转换说明符之外, 这种行为是未定义的。
后面是一个f与F的解释:
我想此刻结论已经明显了:
#include<stdio.h> int main(void) { long double std_test=1.2345; printf("%Lf\n",std_test); return 0; }
大写L,加f输出long double。最后的f小写和大写没影响,但是第一个 l 必须大写成L。
如果写成小写l加f的格式,会报类型不兼容,这样也达不到比double还高的精度。
所以,c标准还是开发不可或缺的参考资料。
欢迎加入作者的小圈子
扫描下方左边二维码加入QQ交流群,扫描下方右边二维码关注个人微信公众号并获取更多隐藏干货,QQ交流群:816747642 微信公众号:Crystal软件学堂
作者:Crystal软件学堂 bilibili视频教程地址:https://space.bilibili.com/5782182 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在转载文章页面给出原文连接。 如果你觉得文章对你有所帮助,烦请点个推荐,你的支持是我更文的动力。 文中若有错误,请您务必指出,感谢给予我建议并让我提高的你。 |