2014-01-19 110 views
1

我想用PHP執行一個非常簡單的計算,但是,我得到錯誤的結果。在PHP中錯誤的簡單計算

我的計算:20.66 * 1.21(=約25),PHP給出:24.20。我將1.21更改爲2,即給出40 ...所以PHP告訴我,20.66 x 2 = 40。當我剛剛回顯$resultaat它給出了正確的值20.66。 (我從XML文件中獲取20.66值)

我在這裏和其他地方搜索了「錯誤的PHP計算」,但無法找到類似的錯誤。有任何想法嗎?

我的代碼:

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, 'https://URL'); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, '25'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
$content = curl_exec($ch); 
curl_close($ch); 
$xml = simplexml_load_string($content); 
$resultaat = $xml->Balance; 
$resultaat2 = $resultaat * 1.21; 
$resultaat3 = round($resultaat2, 2); 

echo $resultaat3; 
+4

你能告訴我們'的var_dump($ resultaat);'? –

+1

24.20/1.21 = 20,確切地說。我建議你從XML文件中讀取的值是20,而不是20.66,正如你相信的那樣。您可能會遇到與[上一個問題]中相同的SimpleXML問題(http://stackoverflow.com/questions/18035163/php-read-decimal-integers-from-xml-attributes),其中包含浮動的SimpleXML對象值通過計算自動轉換爲「int」。也許試試'$ resultaat =(float)$ xml-> Balance;'而不是將SimpleXML對象分配給'$ resultaat'。 –

+0

var_dump($ resultaat); - > 對象(的SimpleXMLElement)#7(1){ [0] => 串(5) 「20.66」 } – William

回答

3

$ xml-> Balance返回一個SimpleXmlElement。 將它投擲成雙。改變這一行

$resultaat = $xml->Balance; 

這個

$resultaat = (double)$xml->Balance; 
3

$ resultaat是一個SimpleXMLElement不是字符串或數字。看來該類的類型玩家返回一個整數值。如果你把這個類型加倍,它會起作用。這是一個例子。

<?php 

$xml = "<xml><value>20.66</value></xml>"; 
$xmlObj = simplexml_load_string($xml); 
var_dump($xmlObj->value); //shows the type 
var_dump($xmlObj->value * 2); // 40 
var_dump((double)$xmlObj->value * 2); //41.32 

我希望這會有所幫助。

+0

有關該問題的更多信息http://stackoverflow.com/questions/4722653/simplexml-get-node-value-without-typecasting –