关于C语言中double型输出的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C语言中double型输出的问题相关的知识,希望对你有一定的参考价值。

参考技术A

%f格式化命令,float,double 默认只输出6位小数。

但是float,double可以表示的浮点数范围及精度是不同的。

例如1653

float a = 1.123456;

float b = 1.12345679;

例如:

ble占8字节 对应的格式为%lf

float占4字节 对应的格式为%f

当两个格式用反时,会造成程序读取数据并赋值时1653,赋值给变量时字节信息错位,导致数据错误。

float 存储数据格式为:1位的符号位+8位的指数位+23位尾数

double存储数据格式为:1位的符号位+11位的指数位+52位尾数

因此,错位存储的数据,解释输出来就差别非常大了。

扩展资料:

Data Output Stream类用于将Java语言中的基本类型数据写入输出流,如byte、int、float和boolean等类型。该类定义了许多以write开头,后面跟数据类型的方法,这些方法用于将指定数据类型的数据写入输出流,如下所示。

(1)writeBoolean():写boolean类型数据。

(2)writeByte():写byte类型数据。

(3)writeCliat():写char类型数据。

(4)writeDouble():写double类型数据。

(5)writeFloat():写float类型数据。

(6)writeInt():写int类型数据。

参考资料来源:百度百科-数据输出流

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

即使把%f换成%1f也是一样的问题,但是输入为float型是只需要改一下%f中间数字就可以正常运行,求解答

C语言中scanf输入一般是不控制精度的,只有printf输出才会控制精度
一般输入输出的占位符浮点型(float)用“%f”,双精度型(double)用“%lf”
!注意double的“%lf”中的“l”是字母“L”的小写,不是数字“1”!
“%1f”“%2f”“%.2f”之类的在输入中是不规范的语法,一般只在输出中使用,表示取几位有效数字
参考技术A %1f,是指那个浮点数只有一位整数,而%2f,是指那个浮点数有两位整数,而楼主要输入的就是两位整数,所以肯定要至少f前面的数字是2 参考技术B scanf("%1f", &a);表示直接收1位输入 20转换后就只有0了
如果像接受double 请使用scanf("%lf", &a);
参考技术C 什么意思?double类型应该是%lf(long float)吧!截图我看看不清

以上是关于关于C语言中double型输出的问题的主要内容,如果未能解决你的问题,请参考以下文章

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

C语言中double要输出几位小数?

C语言中double要输出几位小数?

C语言, float double输出不一样,求大神

c语言long double 怎么输入,输出阿?

C语言中如何将double型数据转换为数组?