Ananth wrote: > On 9/14/07, Jim Dougherty <[EMAIL PROTECTED]> wrote: >> [email protected] wrote: >> > aot=1/2*b*h; >> > Equvilent to >> > aot = 1/(2*b*h); >> > >> > That why your ans is 0.00000 >> > >> > Your can try this >> > aot = b*h*1/2; >> > >> >> This is bad advice. >> >> 1/2*b*h is NOT equivalent to 1/(2*b*h) >> >> Division and multiplication are of equal precedence. >> If you want to add parenthesis to make the order of operations clearer then: >> >> 1/2*b*h is equiv to ((1/2)*b)*h >> >> The answer is 0.0 because (1/2) is integer division whose result is 0. >> >> To correct your problem do one of the following: >> >> aot = 0.5*b*h; >> >> or >> >> aot = b*h/2; > > Simple thumb of rule I've always followed: > (1) Cast all variables in a statement to same type > (2) Always use parenthesis to mark each token even when not required, > it makes life much easier for someone else who's going to maintain > your code, and easy to understand on editors like VS where you can > navigate between parenthesis using CTRL + ] > > Cheers > - Ananth
Good set of rules to follow - particularly for maintenance reasons - which is why I don't use Jim's second example and would use instead: aot = b * h / 2.0; -- Thomas Hruska CubicleSoft President Ph: 517-803-4197 *NEW* MyTaskFocus 1.1 Get on task. Stay on task. http://www.CubicleSoft.com/MyTaskFocus/
