简单的一道问题!!
求教下 如果 float a=2,b=3,c=4; 那么a*b*c/2与a*b*c/2.0与1/2*a*b*c有什么不同
[解决办法]
1/2*a*b*c
这个:
(1/2)*a*b*c;
(1/2)的结果为0
[解决办法]
最后一个 计算 1/2 的时候是 int类型 得到的值为零
[解决办法]
#include<stdio.h>int main(void){ float a=2,b=3,c=4; printf("a*b*c/2=%f\n",a*b*c/2); printf("a*b*c/2.0=%f\n",a*b*c/2.0); printf("1/2*a*b*c=%f\n",1/2*a*b*c);}
[解决办法]
a*b*c/2=12
a*b*c/2.0 =12
1/2*a*b*c=0
vc6.0测试结果!
[解决办法]
前两个是一样的,第三个为0。
为啥这样呢,是因为第三个,程序在运行的时候1/2是按照int执行的,相除为0,遇到a的时候在转化成double类型,前两个是先转化成double类型,在相乘
如果 float a=2,b=3,c=4; 那么a*b*c/2与a*b*c/2.0与1/2*a*b*c有什么不同
[解决办法]
前两个没有区别,第三个式子会先算1/2,结果会取整得0,整个式子也就会等于0了