C语言 关于float 和 double 输入时 如果是float必须用%f double必须用%lf这样对么 但是输出时有问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 关于float 和 double 输入时 如果是float必须用%f double必须用%lf这样对么 但是输出时有问题相关的知识,希望对你有一定的参考价值。

输出时 不管是用%f 还是%lf 都是输出6位小数
问题1:输入时为何float必须用%f double必须用%lf输出时%f就可以了
问题2:为何输出6位小数 我记得是八位
问题3:那这样单精度浮点和双精度浮点岂不是一样 如何输出16位的双精度浮点????

输入时float 用 %f, double 用 %lf, 这是约定(规定)。数据可以用定点格式,也可以 E 格式。
输出float 用 %f, double 可以用 %lf, 也可以用 %f, 这将按默认 定点格式输出。没给 场宽和小数位数 时 按 默认位数输出。
若给了 场宽和小数位数 时 按 给定的 输出,若给的宽度不足时,按实际需要的场宽输出。float 有效数字为6-7位,double有效数字 14位。
%.16lf -- 输出 double,小数点下 16位。
%20.10lf -- 输出 double,小数点下 10位, 场宽20位.追问

额。。。能解释一下定点格式和E格式吗 不是很明白
还有场宽和小数位数后面的对齐输出能不能再详细解释一下
小数点下16位是指的小数点后一共16位么
场宽是指的有效数字的个数还是所有数字的个数

追答

场宽是指输出时留给的空间,例如,场宽20,就是给了20个格子宽度的空位。你输出的负号,小数点,数字可以来占据这些空位,可以占满,也可以不占满。
E格式 是类似科学记数法的格式。输入格式给了 %lf, 你拍入的数是 0.0123 或 1.23E-02 都允许。输出 格式给了 %lf,输出将是 定点格式,只有给了 %e 才输出 E 格式。 输出 格式给了 %g, 将会根据输出数值的状况自动选 E 格式 或 定点格式。
你采纳的答案说 “输出时也应该用%lf,用%f不会报错,但是精度会降低”,这句“精度会降低” 是错误的。精度 取决于 变量本身类型。float 有效数字为6-7位,double有效数字 14位。输出位 给得再多,也改变不了 本身 有效数字 个数。

参考技术A 1、输出时也应该用%lf,用%f不会报错,但是精度会降低
2、默认是小数点后保留6位,但是可以控制输出的位数
3、输出时改成%.16lf能输出16位双精度浮点型
如有不懂欢迎追问!追问

1 输出时不管是%f 还是%lf 都是一样的
2 如何控制输出的位数呢。。。。
3 我对于%a.blf不是很懂 a b分别代表什么 比如%10.5lf

追答

a代表列宽 就是你输出的数占几个字符宽度,小数点也算一位;b是小数点后面保留多少位

输出时用f和lf是不一样的,如果你要看近似值没有问题,但是精度不一样,比如说一个无限不循环小数,你用双精度储存的,它保存了小数点后30位,但你用f控制输出时,就变成了单精度,没准就只能保存小数点后15位了

追问

哦 我好像懂了 我不写列宽的时候 看起来%f 还是%lf 都是一样的

但是我如果写上列宽 那么就不一样了 %f输出的位数要小于%lf
多谢多谢

本回答被提问者采纳

C语言中printf输出float和double都用%f么(scanf又如何)

答:

1.C语言中printf输出float和double都可以用%f,而double型数据还可以用%lf。

2.scanf当中若是对双精度的变量赋值是必须是%后跟lf,而printf当中可以用%f也可以用%lf没有限制。

拓展资料:

c语言中的格式控制符:

%d十进制有符号整数

%u十进制无符号整数

%f浮点数

%s字符串

%c单个字符

%p指针的值

%e指数形式的浮点数

%x,%X无符号以十六进制表示的整数

%0无符号以八进制表示的整数

%g自动选择合适的表示法

参考资料:c语言-百度百科

参考技术A 1 printf输出float和double都可以用%f,double还可以用%lf。
2 scanf输入float用%f,double输入用%lf,不能混用。本回答被提问者采纳
参考技术B 1、printf输出float和double都可以用%f,同时double还可以用%lf。
2、scanf输出float用%f,而double输出用%lf,不能混用。
拓展资料:
C语言编程软件是一款使用代码C语言进行编程的软件,C语言简洁、高效、灵活的特性令其具有独特魅力。现在的程序编写朝着越来越冗长庞大的方向发展,而C语言虽然属于相对'低级'的编程语言,但它的简洁之美是无可替代的。
参考技术C 1 printf输出float和double都可以用%f,double还可以用%lf。
2 scanf输入float用%f,double输入用%lf,不能混用。
参考技术D double用%lf.scanf和printf一样

以上是关于C语言 关于float 和 double 输入时 如果是float必须用%f double必须用%lf这样对么 但是输出时有问题的主要内容,如果未能解决你的问题,请参考以下文章

关于double与float的输入输出问题

c语言float可以输入指数吗

C语言中想输出double和long double型分别用啥控制字符?

c语言 float型数据输入需要注意啥吗

关于C语言float

C语言输入使用double型时,输出总是出错?