2014-01-19 68 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 –