是这么写的: 许多C编译系统将实型常量作为双精度处理。例如已定义一个实型变量f,有如下语句: f=2.45678*4523.65
系统将2.45678和4523.65按双精度数据存储(占64位)和运算,得到的双精度的乘积,然后取前七位赋给实型变量f。这样可以保证计算更精确。
*************************************************
我不理解的是得到的乘积不是11113.612847吗 可是这个范围属于单精度啊 ,为什么一直用双精度,对于这类概念我很迷糊 ,哪位高手能给我指点指点 感激不尽。解释越详细越容易明白越好 谢谢
想在麻烦解释一下 上面说 “然后取前七位赋给实型变量f,这样可以保证计算更精确”为什么这样就能计算更精确呢,还有他说的前七位是什么前七位 。。 我越看越糊涂了.. 你们看我的提问 能知道我哪个地方没学好哪里不明白吗 我自己都不知道我要问什么了~ 无奈 就是知道不理解!
在请问一下 1.0还分float型跟double型吗? 这样的分有何意义 0属于有效数字吗?你说的去掉后面的精度 我还是不太理解呢
追答1.0就是1.0,你说他是1.000000也好,说他是1.000000000000000000000也好,总之他是不会变的。
但是在c中,1.0是实型常量,按照c的规则是按照double来使用的。
所谓有效数字,就是我觉得1.0不够精确,人为在后面追加几个0罢了。
或者是3.14159265太长了,不好用,按照3.14来使用。
至于你一开始问的那个,我这么问,保留16个有效数字的1.000000000000000,你会写这么多0吗?还不是一个1.0搞定。习惯问题罢了
f=2.45678*4523.65
这个不是是两个float相乘吗
字面值常量编译器认为是double,如果想定义为float,那么f=2.45678f*4523.65f
追问哦请问这个11113.612847数值 在float范围内吗
追答似乎LZ真心不太理解有效数字的概念
楼下说的好,看是double还是float型不是看取值范围的
里面说 单精度(float型)32位 有效数6~7 数值范围10^-37~10^38 不是说 数值范围是 10^-37~10^38吗 11113.612847 不是在10^-37~10^38的范围之内吗 为什么说是双精度呢
追答我觉得这个范围是IEEE的精确范围,可又不像。
追问头疼... 看不懂
追答其实就像楼下说的单精度还是双精度用起来都一样