Sprintf舍入十进制值

时间:2014-04-07 17:57:02

标签: php formatting printf

我正在使用sprintf函数来格式化值。当我说值表示整数和十进制值时。但是当我使用此函数时,如果格式化十进制值(不总是),它会舍入。任何人都可以说这背后的原因。我正在使用以下代码。

echo sprintf("%010d",(1142.87 * 100))."\n"; //displays wrong value
echo str_pad((1142.87 * 100), 10, '0', STR_PAD_LEFT); //displays correct value

我需要的是将数字格式化为10位数。第二种方法适用于我。

1 个答案:

答案 0 :(得分:1)

可能会在转换为浮动时发生舍入。您可以使用参数d而不是s来将输入视为字符串,并且数字将正确打印:

echo sprintf("%010d",(1142.87 * 100))."\n"; //displays wrong value
echo sprintf("%010s",(1142.87 * 100))."\n"; //displays correct value