This week's book giveaway is in the OCMJEA forum.
We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line!
See this thread for details.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes printf question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "printf question" Watch "printf question" New topic
Author

printf question

ujjawal rohra
Ranch Hand

Joined: Mar 20, 2010
Posts: 105


Why does this print 7.00 and not 07.00 ?


SCJP 6
Ankit Garg
Sheriff

Joined: Aug 03, 2008
Posts: 9293
    
  17

In 02.2, as you know 0 is for filling 0s when the number is less than the minimum size. 2.2 means that the minimum length of the number must be 2 (2.2) and there must be 2 digits after the decimal point (2.2). So here there is no restriction that there must be 2 digits before the decimal point. Try 04.2 to see the result...


SCJP 6 | SCWCD 5 | Javaranch SCJP FAQ | SCWCD Links
ujjawal rohra
Ranch Hand

Joined: Mar 20, 2010
Posts: 105
Dear Ankit
I am sorry i didnt understand.You are saying that 02 is for filling up the space with zeroes when the number is less
than 2 digits. It is 7 in this case which means it is smaller than 2 digits so it must be padded with 0s.
Also, 04.2 also prints 7.00.
Please clarify
Ankit Garg
Sheriff

Joined: Aug 03, 2008
Posts: 9293
    
  17

Also, 04.2 also prints 7.00.

Yes sorry I forgot about the decimal point. 05.2 will give you 07.00 output.

The thing is, when you say 03.2 (I'm using a different value to make it easier to understand), you are indicating that the number must span at least 3 digits. This includes the number before the decimal point, the decimal point itself and the numbers after the decimal point. Since we have 2 digits after the decimal point, so the length already is more than the minimum length of the number.

Lets say I write printf("%08.2f",new Double(7)), here I want to print the number 7 with 2 digits after the decimal point and I want it to span at least 8 digits. So the output will be 00007.00 which as you can see spans 8 digits...
 
wood burning stoves
 
subject: printf question