当前位置:首页 > 技术 >

c语言float和double的区别(c语言float和double保留小数点后几位)

来源:原点资讯(www.yd166.com)时间:2023-04-16 04:15:42作者:YD166手机阅读>>

首先变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,另一种是强制转换。

自动转换即当不同类型的数据进行混合运算时,编译系统将按照一定的规则自动完成。

而强制类型转换是由程序员通过编程强制转换数据的类型。

自动转换的规则如下:

c语言float和double的区别,c语言float和double保留小数点后几位(1)

c语言float和double的区别,c语言float和double保留小数点后几位(2)

1) 当参与运算的数据的类型不同时,编译系统会自动先将它们转换成同一类型,然后再进行运算。

但问题是转换的时候是谁转换成谁呢?转换的基本规则是“按数据长度增加的方向进行转换”,以保证精度不降低。比如 int 型数据和 long 型数据进行相加或相减运算时,系统会先将 int 型数据转换成 long 型,然后再进行运算。这样的话运算结果的精度就不会降低。

long 是“大水桶”,int 是“小水桶”。int 能存放的,long 肯定能存放;而 long 能存放的,int 不一定能存放。

2) 所有的浮点运算都是以双精度进行的。

在运算时,程序中所有的 float 型数据全部都会先转换成 double 型。即使只有一个 float 型数据,也会先转换成 double 型,然后再进行运算。为什么要这样呢?因为 CPU 在运算的时候有“字节对齐”的要求,这样运算的速度是最快的。这个现在先不管,如果以后有机会学习汇编的话你就知道原因了。

3) char 型和 short 型数据参与运算时,必须先转换成 int 型。这也是涉及 CPU 的运行原理的,记住就行了。

4) 有符号整型和无符号整型混合运算时,有符号型要转换成无符号型,运算的结果是无符号的。这条规则经常使人纠结,可以写一个程序看一下。

# include <stdio.h>

int main(void)

int a = -10;

unsigned b = 5;

if ((a b) > 0)

printf("Hello\n");

return 0;

答案:输出Hello

思考:对于a b来说,计算结果如果使用%d格式进行打印,则会输出-5;若以%u形式打印,则会输出一个很大的正整数。思考这是为什么。

强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

例如: (float) a 把a转换为浮点型,(int)(x y) 把x y的结果转换为整型。在使用强制转换时应注意以下问题:

1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x y)写成(int)x y则成了把x转换成int型之后再与y相加了。

2.无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

例:

int main

float f=5.75;

printf("f=%d,f=%f\n",(int)f,f);

return 0;

f=5,f=5.750000

自动类型转换 VS 强制类型转换

在C语言中,有些类型既可以自动转换,也可以强制转换,例如 int 到 double,float 到 int 等;而有些类型只能强制转换,不能自动转换,例如以后将要学到的 void * 到 int *,int 到 char * 等。

可以自动转换的类型一定能够强制转换,但是,需要强制转换的类型不一定能够自动转换。现在我们学到的数据类型,既可以自动转换,又可以强制转换,以后我们还会学到一些只能强制转换而不能自动转换的类型。

可以自动进行的类型转换一般风险较低,不会对程序带来严重的后果,例如,int 到 double 没有什么缺点,float 到 int 顶多是数值失真。只能强制进行的类型转换一般风险较高,或者行为匪夷所思,例如,char * 到 int * 就是很奇怪的一种转换,这会导致取得的值也很奇怪,再如,int 到 char * 就是风险极高的一种转换,一般会导致程序崩溃。

使用强制类型转换时,程序员自己要意识到潜在的风险

好啦,今天就分享到这啦!喜欢此篇文章或觉得这篇文章对你有帮助的读者可以分享给身边的朋友们。如果你是小白也可以私信回复“资料”领取大礼包一份,以及开发工具一份。

栏目热文

double 和float哪个范围大(float和double哪个类型好)

double 和float哪个范围大(float和double哪个类型好)

要想理解 float 和 double 的取值范围和计算精度,必须先了解小数是如何在计算机中存储的:举个例子:78.37...

2023-04-16 04:26:18查看全文 >>

double和float的优势(float和double用起来有什么区别)

double和float的优势(float和double用起来有什么区别)

float 单精度浮点数在机内占 4 个字节,用 32 位二进制描述。double 双精度浮点数在机内占 8 个字节,用...

2023-04-16 04:15:10查看全文 >>

double和float的用法(什么时候用float什么时候用double)

double和float的用法(什么时候用float什么时候用double)

我记得世纪之初的时候,某本古老的书上有这么一句话,大概是这个意思,无论是float还是double,在CPU内部都是转换...

2023-04-16 04:13:52查看全文 >>

相机的白平衡新老手都这样设置(相机白平衡正确使用方法)

相机的白平衡新老手都这样设置(相机白平衡正确使用方法)

很多初学摄影的人刚接触相机时,一脸茫然不知道相机菜单栏里的各种参数该怎么设置,也不知道怎样设置参数才能拍出自己想要的效果...

2023-04-16 04:31:00查看全文 >>

相机白平衡在哪里调节(相机白平衡的调节平时需要吗)

相机白平衡在哪里调节(相机白平衡的调节平时需要吗)

使用相机拍摄,除了设置曝光三要素之外,白平衡也是非常重要的一个参数。今天我们就围绕白平衡来展开,希望大家能够学会白平衡的...

2023-04-16 04:08:07查看全文 >>

float和double怎么使用(float和double的数值范围)

float和double怎么使用(float和double的数值范围)

为了表示浮点数,我们使用float,double和long double,有什么不同 ?double的精度是float的...

2023-04-16 04:14:06查看全文 >>

double和float有什么区别(double和float哪个优先)

double和float有什么区别(double和float哪个优先)

float是单精度类型,精度是8位有效数字,取值范围是10的-38次方到10的38次方,float占用4个字节的存储空间...

2023-04-16 04:30:49查看全文 >>

铅皮自制朝天钩(自制朝天钩制作方法)

铅皮自制朝天钩(自制朝天钩制作方法)

河里水太浅,立漂不好用,原来买过一个七星漂,没有装备铅皮和鱼钩,一直没有用,去买个朝天钩,也不好意思,网上购买,得好几天...

2023-04-16 04:25:02查看全文 >>

朝天钩能钓走水吗(为什么没人玩朝天钩)

朝天钩能钓走水吗(为什么没人玩朝天钩)

春季最明显的特征是春暖,风多,暖就不用多说了,但是风大风多就很常见了,在正常情况下,白天每天至少有3~4个小时刮风是常态...

2023-04-16 04:42:06查看全文 >>

泡温泉的最佳时间(泡温泉去哪里好)

泡温泉的最佳时间(泡温泉去哪里好)

每个人都希望能在对的时间做对的事,健康生活方面也是一样。你知道吗?不论是喝水、洗澡还是排便,其实都有自己的黄金时间。按照...

2023-04-16 04:38:33查看全文 >>

文档排行