数组([0] =>数组([0] => 21.2694美元)[1] =>数组([0] => 21.2694美元))
(这是basicall google货币转换器)
echo $ arr [0] [0]; //输出是21.2694 usd
但我希望输出像21.26美元
尝试的是, echo substr($ arr [0] [0],0,5); //对于这个子行,我的预期输出是21.26
但我只得到空白页,
我犯了错误
如果输入为21.2694 USD
,我想要21.26USD作为输出基本上我在做货币转换器(google api)
但api在此产生的结果为29.5645美元,我想以29.56美元计算,
这是我的代码段,
$from_currency = "GBP"; $selected_currency = 'USD'; $txt_cash_price = '10'; $txt_card_price = '14'; $get_currency = file_get_contents("http://www.google.com/finance/converter?a=$txt_cash_price&from=$from_currency&to=$selected_currency"); preg_match_all("/(.*)/", $get_currency, $matches,PREG_PATTERN_ORDER); $caprice = $matches[0][0]; OUPUT SOMTHING LIKE THIS 15.2070 USD
但我希望输出为15.20美元
答案 0 :(得分:3)
您应该使用number_format()
(documentation):
string number_format ( float $number [, int $decimals ] )
所以这是一个例子:
echo number_format((float)$arr[0][0], 2), " USD";
这里发生的是我们从数组中获取正确的值,并将其转换为float
。这使PHP删除了值的文本部分,因此您只剩下数字。然后number_format
将其格式化为包含2位小数,最后我们回显" USD"
。
答案 1 :(得分:1)
您可以使用round
$str = '15.2070 USD';
echo round($str,2)." USD"; //15.21 USD
答案 2 :(得分:0)
请勿使用substr()
。使用number_format()
。
echo number_format($arr[0][0], 2);
但是,你这样做的方式原则上也应该有效(尽管这不是最好的方法)。制作$arr[0][0]
的测试输出,以查看它是否包含任何值。
答案 3 :(得分:0)
你需要将数组的值设为float实例,所以这样做
$price = (float) $arr[0][0];
//这会将它转换为纯浮点数。
然后你可以使用number_format来获得恰到好处的小数位。
继承我的测试用例:
$myArray = array(
array(
'21.34957 USD.'
)
);
$float = (float)$myArray[0][0]; //21.34957 | removes the text and turns to a float.
echo number_format($float, 2); //21.35
答案 4 :(得分:0)
如果您只想要普通数字,而没有number_format()
添加的额外格式,则可以使用sprintf()
:
echo sprintf('%0.2f', 21.2694); -> 21.26