为什么c语言中printf("%f",1/3);输出的是0.000000,而printf("%f",1.0/3.0);输出的是0.333333

如题所述

C语言中的整数除法规则是返回结果的整数部分,
比如1/3 = 0.3333333 整数部分是0,所以 1/3=0
4/3 = 1.3333333 整数部分是1,所以 4/3=1

而浮点数和double则是返回带小数部分的结果。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-28
这个吗,你是初学者吗?1/3是取整数,也就是=0,那为什么小数后面有6个0了,是因为%f输出的时候默认为6为有效小数。1.0/3.0是做除法,它的内型定义为为了浮点型,有就是有小数位的。
第2个回答  2013-04-28
1/3默认int型结果为0,进行强制转化后仍然为0,只不过是float型,而1.0/3.0默认为float型本回答被提问者和网友采纳
第3个回答  2013-04-28
注意输出类型,%f输出是浮点型,而1/3都是整形,隐式转换为零,所以输出0.000000,这里懂了后面自然就懂了
第4个回答  2013-04-28
printf("%f",1/3)是双精度的结果,简单说就是取整。如printf("%f",4/3)输出的是1.000000,而
printf("%f",1.0/3.0);则是正常计算。

...1\/3);输出的是0.000000,而printf("%f",1.0\/3.0);输出的是0.333333...
C语言中的整数除法规则是返回结果的整数部分,比如1\/3 = 0.3333333 整数部分是0,所以 1\/3=0 4\/3 = 1.3333333 整数部分是1,所以 4\/3=1 而浮点数和double则是返回带小数部分的结果。

C语言 三分之一为什么输出0
1\/3默认1和3都是int型的,1除以3商为0

在C++中计算1除以三再乘以三 会怎么样?
{ printf("%f",1\/3.0*3);} 这样的结果就是1.000000了。原因是1\/0.3的结果为0.333333,一个int值被一个float值除的结果会是一个float的值。再乘以一个int值结果也为float值。但是你将printf语句中的输出类型改成%d的话,结果依然会是0。因为,实际计算时候,产生了精度损失,使得实际结果小...

书上有一个例题1.0\/3.0*3.0==1.0,当我用%f输出时值为1.000000,用%d输出...
这个和精度损失没有关系关键在printf()输出的时候没有考虑到数据类型转换的问题printf("%d",1.0\/3.0*3.0)计算的1.0\/3.0*3.0是浮点数1.0它在内存是以这样的形式储存的:00111111 11000000 00000000 00000000以4字节表示而printf()输出的时候并不以为自己要输出一个浮点数,而是把上面的后2字节...

c语言,为什么输出是零
应该输入y = 1.0\/3才能得到你想要的结果 y=1\/2中,1和3都是int型,运算后的结果也是int型,所以显示为0 y=1.0\/2中,1.0为浮点型,所以运算后~~~你懂的 0.5

为什么在C语言程序中计算1.0\/3.0*3结果不是1
1.0\/3.0在c语言中结果是0.3333333,那个3不是无穷的,是受限制的,所以乘以3后,不是1,而是0.9999999

C语言中进行浮点数的运算为什么1.0\/3.0*3不等于一??
先进行1除以3除不尽..有小数只是0.3333333333再*3得不到1的!!!

c语言 向浮点型变量里输入整型数据
不一样滴,虽然你输入的是%d,但是当存到a,b,c里面以后值就变了,因为float占4个字节,整型占2个字节,存的时候会出现错误,

C语言中,1\/3等于多少? 1%3等于多少?
在C语言中,1\/3=0,1%3=1 因为C语言中如果除数和被除数都是整数(分母不为0),那么C语言就仅取计算结果的整数部分,注意,不是4舍5入,而是直接舍弃,如19\/10=1,而不是1.9,也不是2,如果要计算1\/3,得到浮点数,一般采取1.0\/3或1\/3.0 对于第二个1%3,就是求1除以3的余数,当然是...

C++问题:cout<<1\/3;结果是0,有办法输出0.3333吗
把1和3中的任意一个数改正为1.0 或者3.0就可以了,当然和楼上说的强制转换是一个意思,他们的绝对都对

相似回答