2016-04-12 8 views
3

私はトルコのリラで米ドルを計算しようとしています。PHPの乗算エラー

TL * USDのように単純ですが、間違って計算されています。

$connect_web = simplexml_load_file('http://www.tcmb.gov.tr/kurlar/today.xml'); 
$usd_selling = $connect_web->Currency[0]->BanknoteSelling; 


echo $usd_selling*2 
//It shows 4. But it should be 5.6726, because $usd_selling gives 2.8363 from the xml. 

どこイム間違っているの?

+0

はあなたが右USD_SELLING値を取得していることを確認していますか? – KubiRoazhon

+0

xmlのサンプル行を表示してください。小数点の区切り記号はドットでカンマではないのですか? –

+0

はい、usd_selling変数をエコーし​​ようとすると、動作して表示されますので、2.8363 –

答えて

4

あなたは常にSimpleXMLを使用して取得した変数を明示的にキャストする必要があります。

$usd_selling = (float) $connect_web->Currency[0]->BanknoteSelling; 

PHPは、これをデフォルトでSimpleXMLElementオブジェクトの文字列値として扱います。

+0

Yeap!それはありがとうございます! –

4

PHPは値を文字列として扱います。あなたは:)

$usd_sellingがオブジェクトで取得するかどうか確認する必要があります

echo floatval($usd_selling)*2; //or echo (float)$usd_selling*2; 
1

:あなたは本当の/浮動小数点として指定する必要があります。

settype($usd_selling, double); 

はすなわち、そうでない場合、PHPはintegerとしてそれを扱います、

1

に使用floatをそれを修正します。:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
$connect_web = simplexml_load_file('http://www.tcmb.gov.tr/kurlar/today.xml'); 
$usd_selling = (float) $connect_web->Currency[0]->BanknoteSelling; 
echo $usd_selling * 2; 
//5.6726