以下是引用SwanK在2013-1-21 12:44:24的发言:
我算球体体积
v=4/3*3.14.r*r*r
得不出正确的答案
结果正如楼上说的
用v=4.0/3.0*3.14.r*r*r 就可以了。
也可以用 v=4/(float)3*3.14.r*r*r算出正确答案来。
我好高兴啊!请继续指教,看我说的对不?
感谢大家的热情回复!
这涉及表达式类型的概念。
4 和 3 都是整数,4/3 就是整数间的除法,结果也是整数,类似小学的带余除法。用 4%3 可以得到相除的余数。不过 C 语言里的整数除法与带余除法的定义可能还有一些区别,主要体现在负数相除上。但 (a/b)*b + (a%b) = a 在 C 里应该是恒等式。
(double)4 / 3,是一个浮点数除以一个整数,只要有一个浮点数,就不是整数除法了,整个表达式也是浮点类型。4.0 / 3 也是一个道理。但 (double)(4/3) 是不行的,因为这是先除完结果已经是个整数了,再强转。