数据与C(浮点数)
创始人
2024-05-25 10:41:44

目录

一.基本概念

二.声明和初始化

三.浮点数上溢和下溢

浮点数在数据类型上一共就两个,一个是float,另一个是double。但两个唯一的区别就在于double精度方面是float的两倍

一.基本概念

首先介绍浮点数的三种书写形式

第一种 数字 :10364.0(%f)

第二种 科学计数法: 1.0364×104(没有)

第三种 指数计数法: 1.0364e4(%e)

C99又添了十六进制表示浮点型常量,即用十六进制前缀(ox),用p代替e,用2次幂代替10次幂

如0xa.1fp10(%a)

0xa.1fp10 = (10 + 1/16 + 15/256) * 1024 = 10364

我这边编译器精度不同,所以十六进制那边有点不一样,大家可以在自己电脑上面看看自己是否是0xa.1fp10

在C标准中规定,float必须能表示六位数字(不是小数点6位数字,包括小数点前面的),double至少能表示13位有效数字。

float:占32位,其中8位用于表示指数的值和符号,剩下24位用来表示非指数部分(我们也称位尾数或有小数)

double:占64位,这32位多出来的一般都用于表示非指数部分

long dougle:满足比double类型更高的精度要求。不过,C只能保证long double类型至少和double类型的进度一致。

平常基本用float类型就够了,但如果对精度要去高则选择double则可以。它们的占位符都是%f

二.声明和初始化

这里我们重点讲解下 some = 4.0 * 2.0; 这里系统在内部运行时通常把4.0 和 2.0被存储在64位的double类型,使用双精度进行乘法运算,然后被乘积的结果截断成float类型的宽度。这样做虽然计算精度更高,但是会减慢程序的运行苏速度。如果不想则在浮点数后面加上F后缀来进行float相乘,想用long double 就用L

如some = 4.0F * 2.0F;some = 4.0L * 2.0L

还有特别提醒一下啊,把一个类型的数值初始化给不同类型的变量时,编译器会把值转换成为与变量匹配的类型,这将导致部分数据丢失比如int cost = 12.99  用double类型的值初始化int类型的变量

三.浮点数上溢和下溢

这里只要只要当计算数字过大,会超出当前类型能表示的范围时,就会产生上溢,printf()显示该值inf或infinity

而当一个很小的数继续相除,尾数部分的位向右移,则会容易损失原来尾部有效位上的数字,因为在假定中这个数已经是最小的了,而在这个基础上还假设更下,我们叫这种浮点数叫坐低于正常的浮点数。这就是下溢。


好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~

如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

 

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...