c语言中float型的精度问题

作者&投稿:汗盆 (若有异议请与网页底部的电邮联系)
c语言中float精度问题~

浮点数不是连续值,有一定精度,特点是动态范围大。它还没有int的精度高,因为int是32位表示,float只有23位有效值,其他是符号位和指数。
既然计算得不到12.10,就是浮点数不能精确表示12.10。 c = 12.099998精度也很高了,只差0.000002,差值很小了

在C/C++中,浮点型float用32位二进制表示,十进制有效数位为7位;double用64位二进制表示,十进制有效数位为16位。值得注意的是,无论 float还是double型,在机内都是按double运算的,区别只在输出时的有效位数不同。当一个数的实际长度不足要求的位数时,计算机会自动补足——但通常是一个随机数而不是全0……

取值范围 3.4*10^38
有效数字只有 7 到 8 个。
例如:
float a=123.456789;
float b=123456789.0;
printf("%20.8f\n",a);
printf("%20.8f",b);
打出:
123.45678711 -- 后3位不精确
123456792.00000000 -- 前7位精确,92 开始不对了。

3.4*10^38是说他可以达到的上限是这么多。谁说精度是38,float精度是小数点后6-7位

补充:嗯我错了,应该是有效数字不是小数点后

只是范围,而不是一定要小数点后38位
float的精度在编程中是可以控制的例如 printf("%0.2f",x);
输出X的值,并保留小数点后2位。
当然,也可以是n位

c语言单精度浮点型为什么可以输出16位,%f可以代替%lf
答:f 是默认输出格式,默认输出格式显示到小数点下6位,前方有多少显示多少。float 型,精度是 有效数字 6-7 位。多出的位的精度不保证。scanf() 输入格式 double 必须用 %lf 不允许用 %f printf() 输入格式 double 可以 用 %lf 也 允许 用 %f 这是编译器 这么定 的 游戏规则,没太多 ...

C语言 float输出的精度
答:double与float型默认会输出6个0,或者小数点后面保留至6位。这是默认规定就那样,没办法

c语言中 long float 和double有什么区别
答:一、主体不同 1、 long:表示一种长整型数据。2、float:浮点型数据类型 3、double:双精度浮点数据型。二、类型不同 1、 long:默认为有符号长整型,含4个字节。2、float:用于存储单精度浮点数或双精度浮点数。3、double:表示十进制的15或16位有效数字。三、取值范围不同 1、 long:取值范围为...

c语言中的float数据类型的有效数字为什么是6~7位
答:float数据 机器内是2进制数,1位符号位 8位指数位 23位“尾数”位 共32 位 2进制数。平时讲 有效数字 是6~7位 ,指10进制。通常程序输入的数是10进制,进入机器后要化成2进制,计算完又转十进制输出。10进制到2进制,2进制到10进制 转换,有的数化不净,有的数化得净。如同10进制分数化10...

c语言double和float区别
答:f默认保留6位小数,不足位以0补齐,超过六位按四舍五入的方法保留6位,若想输出指定位数,在格式化输出语句中表示变量的字母及%中间的部分控制输出位数,小数点后是小数位数。C语言中,float和double都属于浮点数。区别在于:double所表示的范围,整数部分范围大于float,小数部分,精度也高于float。例如...

C语言中float型数据表示的最大数字到底是多少啊?
答:C语言中float型数据表示的最大数字为3.402823E38。FLOAT数据类型用于存储单精度浮点数。具有4个字节,包括一个符号位、一个8位二进制指数和一个23位尾数。由于尾数的高顺序位始终为1,因此它不是以数字形式存储的。此表示形式为float类型,提供了一个在-3.402823E38到3.402823E38之间的范围。

c语言为什么float类型有时候不四舍五入?
答:浮点数保留小数点后的数据,有时会自动四舍五入,有时不会自动四舍五入。但是…如果把一个浮点数赋给一个整数变量后,一定不会四舍五入。所以,我们在保留浮点数的小数点精度时,必须要人工处理四舍五入。你可以多找几组数据试试,

如何用c语言计算小数点后位数(float本身都无法精确)
答:float以10进制只有7个有效数字,如果你存的数大于7位那么一定会不准确,小于7位的就准确,其实float只有前7位有意义,有时会只有6位有意义。。。 也就是说你只用用7-整数位数就行,如果整数位为0,那么你只需要7+第一个不是0的小数所在位置即可,即此时小树位数是大于7的,但有效数字个数仍然是7...

c语言中float什么意思 输入的可不可以是一位有效数字
答:float是C语言中的一个关键字,表示单精度浮点型。输入的可以是一位有效数字。float是用来表征一个数或变量是属于单精度浮点型的,是一个类型说明符。举例如下:float a = 4; // 定义一个单精度浮点型变量a,并初始化为4(即输入的是一位有效数字)printf("%f", a); // 以float型输出变量...

C语言中float是什么类型?
答:C语言中float是:单精度浮点型数据类型。浮点型数据类型,FLOAT 数据类型用于存储单精度浮点数或双精度浮点数。浮点数使用 IEEE(电气和电子工程师协会)格式。浮点类型的单精度值具有 4 个字节,包括一个符号位、一个 8 位 二进制指数和一个 23 位尾数。由于尾数的高顺序位始终为 1,因此它不是以...