php - 使用 sprintf 添加“+”号从格式化数字中删除小数

seb*_*ebu 1 php printf currency number-formatting

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

12 => +12.00
150.5 => +150.50
-30.2 => -30.20
-2.85193 => -2.85
Run Code Online (Sandbox Code Playgroud)

我有这个:

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

但它从格式化的数字中去除小数并返回诸如+45.

有没有一种有效的方法来同时获得+号和小数?

Bar*_*mar 5

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

sprintf("%+.2f", $key);
Run Code Online (Sandbox Code Playgroud)

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

如果您同时需要符号和逗号,您可以这样做:

($key >= 0 ? '+' : '') . number_format(floatval($key), 2, '.', ','))
Run Code Online (Sandbox Code Playgroud)