I need to pad the integer part with 0, the integer part must be at least 2 characters
str_pad( 2 ,2,"0",STR_PAD_LEFT);// 02 -> works
str_pad( 22 ,2,"0",STR_PAD_LEFT);// 22 -> works
str_pad( 222 ,2,"0",STR_PAD_LEFT);// 222-> works
str_pad( 2. ,2,"0",STR_PAD_LEFT);// 2. -> fails -> 02. or 02
str_pad( 2.11 ,2,"0",STR_PAD_LEFT);// 2.11-> fails -> 02.11
Is there simple code for that?
If possible the same in Java please
double x=2.11;
String.format("%02d%s", (int) x, String.valueOf(x-(int) x).substring(1))
is not only ugly but prints 02.10999999999999988
edit for Java: Java integer part padding
You can also use
printf()
functions to pad the integer :Something like (codepad):
Another one :
The following test :
Fails because str_pad is working on a string, but you entered a number with a decimal but no decimal part so it is considered as an integer. If you want to keep the '.' use the following instead :
A fast solution: http://codepad.org/EXcbqGos
It will only work for non-negative numbers.
No, there is no simple way.
If the output you're looking for is
02.11
, then trysprintf()
:Links that may help are:
http://us2.php.net/sprintf
Extra leading zeros when printing float using printf?