dave@lsuc.UUCP (05/03/87)
This is probably old news to many people, but I was startled to have it bite me. I've been programming in C for 11 years and I thought I knew how printf behaved. It appears that the behaviour of printf("%6.0f", x); while standardized, is not documented in the v7 or System V manuals. (X3J11 documents it correctly.) printf rounds to the appropriate number of digits. I've usually written things like printf("%6d", (int)(x+0.5)); in the past, rounding by hand. I happened to use %.0f (and no cast) recently, and I was surprised to find out that the +0.5 produces wrong results in this case. David Sherman The Law Society of Upper Canada Toronto -- { seismo!mnetor cbosgd!utgpu watmath decvax!utcsri ihnp4!utzoo } !lsuc!dave