使用sprintf添加“+";符号从格式化的数字中删除小数


using sprintf to add "+" sign removes decimals from formatted number

我想这样做来显示股票指数的变化:

12 => +12.00
150.5 => +150.50
-30.2 => -30.20
-2.85193 => -2.85

我有这个:

sprintf("%+d", number_format(floatval($key), 2, '.', ','))

但它是从格式化的数字中剥离小数,并返回类似+45的内容。

有没有一种有效的方法可以同时得到+符号和小数?

%d用于整数,必须使用%f用于浮点。

sprintf("%+.2f", $key);

不幸的是,你不能用这个来获得逗号。它们也不适用于原始代码,因为%d将参数解析为整数,当它到达逗号时,它将停止读取数字。

如果你需要符号和逗号,你可以做:

($key >= 0 ? '+' : '') . number_format(floatval($key), 2, '.', ','))