PHP - 强制整数转换浮点三位小数 [英] PHP - Force integer conversion to float with three decimals

查看:924
本文介绍了PHP - 强制整数转换浮点三位小数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将一大串数字转换为+/- NNN.NNN的特定格式。
所以,如果我有这些数字:

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

我希望他们的最终格式为

  $ numbers2 = array(-001.023,+000.322,+0.10.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;

}

这是错的,我只是不知道要用什么来实现它。 解决方案

尝试使用 sprintf()

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


I am trying to convert a big array of numbers to a specific format which is +/-NNN.NNN. So, if I have these numbers:

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

I want their final format to be

$numbers2 = array(-001.023, +000.322, +010.000, +005.054);

I am trying to do it like this:

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;

}

This is wrong and I just don't know what to use in order to achieve it.

解决方案

Try using sprintf()

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

这篇关于PHP - 强制整数转换浮点三位小数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆