PHP sprintf格式
如果我有数字PHP sprintf格式,php,format,printf,Php,Format,Printf,如果我有数字-4-3.5; 0; 14.46 我应该使用什么sprintf格式?现在我使用的是%g,但是这个为我打印的14不是14,46为什么?感谢如中所述: 但是,%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"; ec
-4-3.5; 0; 14.46
我应该使用什么sprintf格式?现在我使用的是%g
,但是这个为我打印的14
不是14,46
为什么?感谢如中所述:
但是,%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
是带有小数点字符逗号的浮点字符
应用str_replace(“,”,“,$member->rating)
应该可以解决这个问题
尝试:
%f给我14000000
echo sprintf('%s评级为%f',$member->name,$member->rating)
问题似乎是$member->rating=14.0
而不是14.46,检查上面的%g输出。使用%s
一切正常,这是一个糟糕的解决方案吗?您是否会运行var\u dump($member->rating)代码>&按原样共享输出?
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
*/
echo sprintf('%s rating is %g', 'NAME', str_replace(',', '.', $member->rating))."\r\n";