Java PHP整数部分填充

Java PHP整数部分填充,java,php,floating-point,numbers,pad,Java,Php,Floating Point,Numbers,Pad,我需要用0填充整数部分,整数部分必须至少包含2个字符 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. o

我需要用0填充整数部分,整数部分必须至少包含2个字符

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
有简单的代码吗

如果可能的话,请使用Java语言

double x=2.11;
String.format("%02d%s", (int) x, String.valueOf(x-(int) x).substring(1))
不仅难看,而且打印02.109999999888

为Java编辑:

快速解决方案:


它只适用于非负数。

不,没有简单的方法

function padIntegerPart($n, $len) {
    $intPart = (int)$n;

    return str_repeat('0', max(0, $len - 1 - floor(log($intPart, 10)))) . $n;
}

您还可以使用
printf()
函数填充整数:

类似()的内容:


如果您要查找的输出是
02.11
,请尝试
sprintf()

可能有帮助的链接包括:

另一个:

function my_str_pad ($input ,$pad_length, $pad_string) {
    $pad_length += strlen($input) - strlen(intval($input));

    return str_pad($input, $pad_length, $pad_string, STR_PAD_LEFT);
}
以下测试:

str_pad(2., 2, "0", STR_PAD_LEFT);// 2. -> fails -> 02. or 02
失败,因为str_pad正在处理字符串,但您输入的数字带有小数,但没有小数部分,因此它被视为整数。如果要保留“.”,请使用以下选项:

str_pad("2.", 2, "0" , STR_PAD_LEFT);// 2. -> works

stru_pad正在处理字符串。在将str_pad应用于整数部分之前,应先拆分整数部分和小数部分,然后再追加小数部分。
sprintf
带有
%*f
,顺便说一句,只能使用固定的小数点。(为什么我不能评论其他答案?)我认为你需要更多的声誉。
function my_str_pad ($input ,$pad_length, $pad_string) {
    $pad_length += strlen($input) - strlen(intval($input));

    return str_pad($input, $pad_length, $pad_string, STR_PAD_LEFT);
}
str_pad(2., 2, "0", STR_PAD_LEFT);// 2. -> fails -> 02. or 02
str_pad("2.", 2, "0" , STR_PAD_LEFT);// 2. -> works