# printf question

ujjawal rohra

Ranch Hand

Posts: 105

posted 5 years ago

- 0

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

Posts: 105

posted 5 years ago

- 0

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

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

SCJP 6

posted 5 years ago

Yes sorry I forgot about the decimal point.

The thing is, when you say

Lets say I write

- 0

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...

SCJP 6 | SCWCD 5 | Javaranch SCJP FAQ | SCWCD Links