PHP - 强制将整数转换为带有三个小数位的浮点数

3

我正在尝试将一个大的数字数组转换为特定格式,即+/-NNN.NNN。 因此,如果我有以下数字:

$numbers1 = array(-1.23, 0.3222, 10, 5.54);

我希望它们的最终格式是什么。
$numbers2 = array(-001.023, +000.322, +010.000, +005.054);

我将尝试这样做:

我试图这样做:

foreach ($numbers1 as $n) {
 $fnum = abs(number_format((float)$n, 3, '.', ''));
 if ($fnum>0 && $fnum<10) { 
     $fnum = '00'.$fnum;
 } else if ($fnum >= 10 && $fnum<100) {
     $fnum = '0'.$fnum;
 }
 if ($n>0) $fnum = '+'.$fnum;
 if ($n<0) $fnum = '-'.$fnum;
 if ($n == 0) $fnum = '+000.000';
 $numbers2[] = $fnum;

这是错误的,我不知道该使用什么来实现它。


请注意,您希望这些值是字符串 - 通过使用正确的 array("-001.023", ..) 语法在样例中明确这一信息,以避免混淆。 :) - user2246674
PHP 没有 "integer" 和 "float",只有 "numeric"。如果你想确保以特定格式显示它,需要在过程中将其转换为字符串。 - Havenard
@Havenard,楼主已经在做这件事了,fsvo 并且成功有限(请参见 number_format 等)。 - user2246674
是的,我只想以那种格式显示它们,这样它们就会成为字符串。 - ali
1个回答

8

尝试使用sprintf()函数。

$numbers2[] = sprintf("%+07.3f", $fnum);

@Havenard 我一直在尝试理解,但是一直没有弄明白。我会找到你的答案并点赞以示感谢。 - John Conde
使用%+07.3f,它将强制显示符号。 - Havenard
@Havenard 好主意。我忘了那个。最终我使用了 %+08.3f:+ 表示符号(如注释所述),0 表示填充零,8 表示总长度(包括符号),3 表示精度。仅使用 7 作为长度只允许小数点前两位数字。 - user2246674

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接