关于C语言 双精度 单精度 的问题

例题1:若有定义:inta=7;float x=2.5,y=4.7;则表达式 x=a%3*(int)(x+y)%2/4的值是?(习题册答案:2.500000)
例题2:设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是?(习题册答案:6.000000)

我想知道 单精度和双精度小数点位数是怎么确定的?网上看到说:单精度小数点后6位,双精度小数点后8位,可从上述例题结果看,都是小数点后6位,是答案错了呢?还是其它知识我没掌握?
谢谢各位热心人!!

该题其实考察的不是精度问题,是整数和浮点数之间的运算问题,结果没有错误,以后向这种问题你可以上机运行一下呀,一看结果就什么都明白了,首先你说的精度是指精确度,并不是保留小数的位数,这两个概念不同,你可能弄混了,而输出的时候,double和float默认都是保留六位,我就再这里给你解释一下这两个题目吧。 首先看第一题,题目的运算顺序就是从左到右计算,a%3值为1,(int)(x+y)值为7,a%3*(int)(x+y)值为7,a%3*(int)(x+y)%2值为1,a%3*(int)(x+y)%2/4值要看他的赋值对象和输出格式了,要是整形就直接舍去小数,要是浮点型就保留小数。 题目二就不用多解释了吧,多思考,多学习,祝你成功!
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-03
单精度和双精度的精度都不看小数点位置(浮点)、也不看十进制的数位。

精度由二进制的尾数数位bit决定,
float尾数有23bit,显示时可以有6-9个“有效数位”的十进制数。
double尾数有54bit,可以有16-19个“有效数位”的十进制数。

总之,十进制的值并不代表浮点数的实际值。浮点数用近似值表示现实中的十进制数值。
反过来,浮点数的十进制显示值也只能体现接近该浮点数的近似值
第2个回答  2012-09-03
习题1答案错了吧,小数点后面应该都是0,因为前面的操作全是整形操作,是没有小数的
第3个回答  2012-09-03
该题的目的不是精度,是整数运算。
而且答案还有错
第4个回答  2012-09-03
float 符号位:1 指数位:8 尾数位:23
double 忘了

关于C语言 双精度 单精度 的问题
该题其实考察的不是精度问题,是整数和浮点数之间的运算问题,结果没有错误,以后向这种问题你可以上机运行一下呀,一看结果就什么都明白了,首先你说的精度是指精确度,并不是保留小数的位数,这两个概念不同,你可能弄混了,而输出的时候,double和float默认都是保留六位,我就再这里给你解释一下这...

C语言什么是单精度、双精度
在C语言的数据类型家族中,双精度与单精度是其中的浮点型数成员。双精度被命名为double类型,而单精度则对应为float类型。double类型的存储方式使用了64位的二进制,而float类型则仅需32位二进制。由此,双精度与单精度在数值范围的最大值与最小值,以及有效数字的个数上产生了显著的差异,这直接影响了...

c语言数据类型中“双精度”“单精度”是什么意思?
双精度,单精度指浮点型数,双精度 叫 double 型, 单精度 float 型。double 型 用 64位2进制存放,float 型 用 32位2进制存放。所以,两种数 的 最大和最小 数值范围 不同,数的有效数字个数不同,也就是精度不同。double 型 最大数值 1.7976931348623158e+308 最小正数数值 2.22507385...

c语言单精度与双精度的区别?
C语言中单精度和双精度的主要区别在于它们的数值表示精度和存储大小。1. 精度区别:单精度浮点数通常用于表示小数点后有7位精度的数字。而双精度浮点数则用于表示小数点后有约15位精度的数字。双精度浮点数比单精度浮点数能提供更准确的数值计算。2. 存储大小区别:在大多数计算机系统中,单精度浮点数占...

c语言单精度和双精度的区别
2. 存储大小不同:在C语言中,单精度浮点数通常占用32位内存空间,而双精度浮点数则占用64位内存空间。由于双精度需要更多的存储空间,因此在处理大量浮点数时,内存占用可能会成为一个考虑因素。3. 数值范围:由于双精度的精度更高,它不仅能够表示更精确的小数,还能够表示更大范围的整数。这意味着在...

单精度单精度和双精度的区别
在C语言中,单精度和双精度是两种重要的数值类型,分别称为浮点类型(Float)。它们的初衷是为了科学计算提供足够的精度处理高精度数值,但并非完全精确,而是确保在特定精度范围内准确。以比较棍子长度为例,尽管现实中无法精确测量完全相同的长度,但我们关心的是比较它们的相对长度。单精度和双精度数值类型...

C语言单精度与双精度的区别?
C语言中的浮点型变量主要有三种类型:单精度(float)、双精度(double)和长双精度(long double)。它们之间的主要区别在于有效数字位数。在Turbo C中,单精度变量占用32比特,有效数字大约为6-7位;双精度变量则占用64比特,有效数字提升到15-16位;长双精度占用128比特,有效数字范围在18-19位之间。尽管...

单精度型浮点数和双精度有什么区别
在C语言中,浮点数用于表示实数,主要分为单精度型和双精度型,分别是float和double。它们之间存在以下区别:首先,单精度浮点数(float)占用四字节存储空间,而双精度浮点数(double)通常占用八字节。其次,在表示范围方面,float的范围大约是-3.4E-38到3.4E+38,而double的范围则更宽,大约为-1.7E...

关于C语言中单双精度的问题
就是你想知道的数值范围。对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。

C语言中单双精度数表示什么意思
c语言中单精度数和双精度数的本质区别在于数据类型所占的内存字节,浮点数,在C语言中使用的是IEEE754浮点数编码,该标准规定了单精度浮点数和双精度浮点数所占的内存字节,一般单精度数占用4个字节,双精度数占用8个字节,扩展双精度数占用80个字节。

相似回答