c里面,double a=0.65f 这样的赋值是啥意思,是错的吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c里面,double a=0.65f 这样的赋值是啥意思,是错的吗?相关的知识,希望对你有一定的参考价值。

首先,这个语句是正确的!

语句中存在一个隐式类型转换,0.65f的意思是:将常数0.65当成float类型。所以,当一个单精度常数赋值给一个双精度类型变量时,发生一次类型转换。

// "正规"的写法
double a = 0.65;   //c语言中,0.65被默认地当成double类型

参考技术A double应该是指的 a 的精度为双精度 参考技术B 简单来说,没用。

虽然一般说浮点数赋值后加个f,但这完全和不加等价。所以一般不加。
例如float n=2.222f;和float n=2.222;一样

double一般加f也是什么用都没有的

关于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 a=0.65f 这样的赋值是啥意思,是错的吗?的主要内容,如果未能解决你的问题,请参考以下文章

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

java丢失精度问题

C语言double 输入输出的问题,如图的程序,输入数值进去总是输出00000,求解!

赋值转换

C语言怎样给字符数组赋值

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