首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

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

发布网友 发布时间:2022-04-21 10:43

我来回答

12个回答

懂视网 时间:2022-04-21 15:05

以C语言为例,double型用【printf的%f】输出,根据“默认参数提升”规则(在printf这样的函数的可变参数列表中,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。

  c语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows、macOS、Linux、Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。

  C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。

热心网友 时间:2022-04-21 12:13

%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类型数据。

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

热心网友 时间:2022-04-21 13:31

你理解错咯

double的意思是可以有16位有效数字
而在固定格式输出的时候,都默认的是6位
用double的时候f前面加l是没有效果的
你要输出长度,可以写,%0.8f,这样就是输出8个有效数字了

热心网友 时间:2022-04-21 15:05

你要想输出16位小数的话,那就用%.16lf 这样就能输出了,如果是float型的话,最多6位,否则就会出现一些奇怪的数字,至于直接 输出时都是6位的问题,我认为是printf在输出浮点型时都默认为%.6lf

热心网友 时间:2022-04-21 16:57

一个实型常量可以赋给一个 float 型、double 型或 long double 变量。根据变量的类型截取实型常量中相应的有效位数字。 一个实型常量可以赋给一个 float 型、double 型或 long double 变量。根据变量的类型截取实型常量中相应的有效位数字。

热心网友 时间:2022-04-21 19:05

%f格式化命令,float,double 默认只输出6位小数。
但是float,double可以表示的浮点数范围及精度是不同的。
例如
float a = 1.123456;
float b = 1.12345679;

热心网友 时间:2022-04-21 21:29

%f,全部输出,而且输出6位小数.

P.S. float的精度也远远超过6个小数

热心网友 时间:2022-04-22 00:11

C语言默认是输出8位。
输出改成 printf("%.16lf\n",a);
这样就行了。

热心网友 时间:2022-04-22 03:09

int main()
{
double a;
scanf("%lf",&a);
printf("%-20.10lf\n",a);

}

热心网友 时间:2022-04-22 06:23

用printf("%.16lf\n",a);即可

热心网友 时间:2022-04-22 09:55

你理解错咯

double的意思是可以有16位有效数字

而在固定格式输出的时候,都默认的是6位

用double的时候f前面加l是没有效果的

你要输出长度,可以写,%0.8f,这样就是输出8个有效数字了。

拓展资料:

double a;

scanf("%f",&a);   //应用scanf("%lf",&a);

执行上面语句时,发现double类型的输入不能使用%f进行输入,得用%lf才能正常得到a的值。

而在输出double类型时却可以用%f,这是因为printf("%f",a);在执行时C自动将float型的参数转换成double型。

故double型的输入输出形式如下:

double a;

scanf("%lf",&a);

printf("%f",a);

热心网友 时间:2022-04-22 13:43

我想问题可能出现在"%lf"里,可以查一下"%lf"所定义的数位是多少.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com