c语言浮点型常量,c语言浮点型常量的规则

dfnjsfkhak 47 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言浮点常量问题,于是小编就整理了1个相关介绍c语言浮点型常量的解答,让我们一起看看吧。

  1. C语言程序开发中,处理浮点数应该注意哪些?

C开发中,处理点数应该注意哪些?

谢邀。

在C语言程序开发中,有时浮点运算是不可避免的,遗憾的是,由于计算机精度是有限的,所以很多时候C语言程序并不总是能够精确的存储和处理浮点数,这也是很多C语言程序尽力使用整型运算代替浮点运算的原因之一。

c语言浮点型常量,c语言浮点型常量的规则-第1张图片-芜湖力博教育咨询公司
图片来源网络,侵删)

计算机存储浮点数的方式与存储整数的方式有所不同,遇到很长的浮点数时,总不能***用无限制长度的空间存储吧?事实上,对于计算机中浮点数的存储,国际上制定过一些标准。这一点可参考我之前的文章。

鉴于C语言程序不能总是精确的表示浮点数,在我们编写程序时,需要谨记这一特点,否则最终C语言程序可能会产生难以理解的结果。这里将以问答的形式讨论C语言程序开发中,涉及的浮点运算基本注意事项。

其实并不总是如此。很多计算机使用二进制表示整数,也使用二进制表示浮点数。我们人类常用十进制表示数字,遗憾的是,十进制能够精确表示的数字,并不一定也能使用二进制表示精确。

c语言浮点型常量,c语言浮点型常量的规则-第2张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

例如在十进制中,分数 1/3 = 0.33333…无数个3,十进制是无法精确表示这一数字的。同样的道理,0.1 也即 1/10 在二进制中也是无法精确表示的(0.0001100110011…),所以在这种情况下,3.1 也就无法精确表示了,而只能使用 3.0999999 去近似。

使用 printf() 函数打印 3.1,最终显示到终端的结果主要取决于所使用计算机中二/十进制的转换仔细程度。实际上,有时我们将一个精确的十进制浮点数转换为二进制,然后再转换回十进制,会发现前后两个数字并不“相等”。

什么 sqrt(144.) 得不到正确结果?

c语言浮点型常量,c语言浮点型常量的规则-第3张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

小明希望使用C语言math库的 sqrt() 函数计算 144 的平方根,于是他写出下面这样的C语言代码,请看:

首先浮点型数据是用来表示具有小数点实数的,凡以形式或指数形式出现的实数均是浮点型常量,浮点型数据包括float单精度浮点型)、double(双精度浮点型)、long double(长双精度浮点型)。

float型(单精度浮点型)。编译系统为每一个float型变量分配四个字节,能得到六位有效数字。

double型(双精度浮点型)。编译系统为每一个double型变量分配八个字节,能得到十五位有效数字。

long double型(长双精度)型。不同的编译系统对其处理不一样,Turbo C对其分配十六个字节,Visual C++则对其分配八个字节。

注意:

C编译系统把浮点型常量都按双精度处理,分配八个字节。

在C语言中进行浮点数的算数运算时,将float型数据都自动转换为double型,然后进行运算。

到此,以上就是小编对于c语言浮点型常量的问题就介绍到这了,希望介绍关于c语言浮点型常量的1点解答对大家有用

标签: 浮点 点数 十进制