2011-06-21 30 views
1

我使用SimpleXML来从远程服务器恢复XML,我得到的值,可以是这个样子:PHP的SimpleXML - 格式化整数

1.28586732

-1.2357956

我救在可变这些值,但我想:

  1. 显示的每个值以不超过2位小数
  2. 有一个加号之前的值,如果它是正
  3. 应用不同的CSS样式取决于值是否是正面或负面的(例如显示数值为红色,如果它是一个负数)

谢谢!

回答

3

要显示只有2位小数既可以使用round($num, 2)sprintf("%.2f", $num),所不同的是sprintf总是返回2位小数,即55.00,而round仅示出了小数点的必需量。 sprintf也是区域意识。

为了有一个加号之前的值,你会简单地做if ($num >= 0) $num = '+'.$num;

最后做的CSS样式,你应该换一个跨度数,并给它一个类,即无论是positivenegative

做的所有三个,你可以有这样的功能:

function format_decimal($num) 
{ 
    return sprintf(
     '<span class="%s">%+.2f</span>', 
     $num < 0 ? 'negative' : 'positive', 
     $num 
    ); 
} 
+0

@stereofrog:很好的捕获,这是一个更好的方式来做到这一点,我会编辑我的答案。 –

+0

太棒了!谢谢:) – Jane

1

令:

$s=1.2344545665 

if($s>=0) 
{ 
echo "<div class=\"addclass\">+".roundDigits($s,2) . "</div>"; 
} 
else 
{ 
echo "<div class=\"minusclass\">-".roundDigits($s,2) . "</div>"; 
} 
+0

你在变量定义后缺少一个分号。 “roundDigits”是什么,我认为你的意思是“圆”。为什么当它隐式存在时,你会在负数上加上负号?这个答案有很多错误。 –