sprintf() 的 %g 占位符正在截断数字,并以逗号作为小数分隔符

问题描述 投票:0回答:1

我有以下号码:

-4
-3.5
0
14.46

我应该使用哪种

sprintf()
格式?

现在我正在使用

%g
,但这会从
14
打印
14,46
。为什么会出现这种情况?

php format printf
1个回答
1
投票

如所述:http://php.net/manual/en/function.sprintf.php

%f - the argument is treated as a float, and presented as a floating-point number

但是,

%g
输出如下:

echo sprintf('%s rating is %g', 'NAME', -4)."\r\n";
echo sprintf('%s rating is %g', 'NAME', -3.5)."\r\n";
echo sprintf('%s rating is %g', 'NAME', 0)."\r\n";
echo sprintf('%s rating is %g', 'NAME', str_replace(',', '.', '1,74'))."\r\n";

/* 
NAME rating is -4
NAME rating is -3.5
NAME rating is 0
NAME rating is 14.46
 */

我认为问题在于

$member->rating
是带有小数点字符
comma
的浮点数。

应用

str_replace(',', '.', $member->rating)
应该可以解决问题。

尝试:

echo sprintf('%s rating is %g', 'NAME', str_replace(',', '.', $member->rating))."\r\n";
© www.soinside.com 2019 - 2024. All rights reserved.