C语言中,float f=123.456与123.456是不相等的,请问为什么?

如题所述

类型不一样,就不相等啊,前边你定义的是float,后边那个没说啊,可以是float,也可以是double或者字符,所以可能是不等的。追问

如果后面那个是double呢

追答

double也是不相等的。

追问

为什么

精度不同

追答

怎么说呢,不同类型在计算机中占的位数是不同的。我们都知道,计算机只认识0和1,任何类型的数据都要转换成0和1存储在计算机中。
比如在在32 位的系统上
short 型占的内存大小是2 个byte(1byte是8个bit,即一位);
int 型占的内存大小是4 个byte;
long 型占的内存大小是4 个byte;
float 型占的内存大小是4 个byte;
double 型占的内存大小是8 个byte;
char 型占的内存大小是1 个byte。

只有两个类型相等,值一样,这两个数才相。

望采纳

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-24
你这个问题不怎么详细啊!追问

结果是不相等的,为什么?

第2个回答  2014-10-24
把问题具体花。比如你写个程序说说你的疑问追问

结果是不相等的,为什么?

追答

说明白点

C语言中,float f=123.456与123.456是不相等的,请问为什么?
类型不一样,就不相等啊,前边你定义的是float,后边那个没说啊,可以是float,也可以是double或者字符,所以可能是不等的。

为什么c语言中定义一个变量f=123.456,printf("%f",f)时结果是123.456001...
float float,浮动的。:D 人类社会使用十进制,所以输入,输出都是按十进制来的。而计算机中采用二进制,所以,你输入的数要转化为二进制存储。十进制表面上的123.456,用二进制远不能用23个二进制比特位的尾码精确存储,只能四舍五入的转化为二进制存储。当取出时就不能还原原本的十进制123.456,...

c语言中,float浮点型不是可以确定的有效位数是7位么?为什么定义float 123...
至于输出结果,C语言默认的是输出输出8位(包括整数部份,小数点,小数总价),你也可以设置输出其它位数的结果。32位说的是在内存中分配32 bit的空间来存储数据。

为什么输出a的值为123.456001,而不是123.456000
这是计算机本身决定的,float型、double型的这种浮点数,在精度上不可能完全精确,运算过程中有一定精度丢失。但不会丢失太多.. 比如6位小数的float丢失的是7位和以后的..

C语言float f=123.456
g是会在%f和%e之间选择最短的一个形式输出,并且会省略那些无意义的0

c语言f=123.456 printf("%e,%10e,%10.2e,%.2e,%-10.2e",f,f,f,f,f...
第一,浮点类型小数位默认为6位,大多数编译器都是这么定了。第二,当字符实际宽度大于你指定的宽度时,以字符宽度为准。 (其他类型也一样)

float a=123.456;printf(%6.4f\\n,a)为什么答案是123.4560?
你定义输出的格式为小数点后面四位数,如果数据的小数点不够四位,则补零,如果多于4位,则截取前面四位;整数部分至少显示六位,多于的全部打印,不足六位在数据前面补空格,因此你看到的这数据是123.4560

假设一数float a=123.456,那输出%10f的是123.456001而不是123.4560000...
是float的精度问题,float会精确到小数点后6位左右,如果要更精确可用double double a=123.456;printf("a=%10.6lf\\n", a);float 输出%10.2f是123.46

C语言1234.456输出%010.2f类型为什么是0000123.46
因为小数位数只有2,所以后面的6是5进了一位变成了6,你可以把f改为123.454后面的4不能够像前进位,所以输出为123.45,相当于数学上的四舍五入

float f=123.456; printf("%f%10.2f|n",f) 输出为什么是的123.456001...
f是输出实行(带小数点的)默认为小数点后6位。后面的001是系统添上去的。

相似回答