2014-01-19 5 views
1

PHP로 계산을 아주 간단하게하고 싶지만, 잘못된 답변을 듣습니다.PHP에서 간단한 계산이 잘못됨

내 계산 : 20.66 * 1.21 (= 약 25), PHP는 24.20을 제공합니다. 1.212으로 바 꾸었습니다. 그러면 40이됩니다 ... PHP가 20.66 x 2 = 40이라고 말하고 있습니다. 내가 단지 $resultaat을 울리면 20.66의 올바른 값을줍니다. (20.66 값을 XML 파일로 가져옴)

"잘못된 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) 보여줄 수이 라인이에

$resultaat = $xml->Balance; 

을 변경,'? –

+1

24.20/1.21 = 20, 정확하게. 나는 당신이 믿는 것처럼 당신이 XML 파일에서 읽는 가치가 20.66이 아닌 20으로 나오길 제안한다. [이 이전 질문] (http://stackoverflow.com/questions/18035163/php-read-decimal-integers-from-xml-attributes)에서와 같은 SimpleXML 문제로 실행될 가능성이 높습니다. 여기서 SimpleXML 객체는 플로팅 값은 자동적으로 계산에 의해'int'에 캐스트됩니다. 아마도 $ resultaat =에 SimpleXML 객체를 할당하는 대신'$ resultaat = (float) $ xml-> Balance;를 시도해보십시오. –

+0

var_dump ($ resultaat); -> 객체 (SimpleXMLElement) # 7 (1) { [0] => 문자열 (5) "20.66는" } – William

답변

3

$ xml-> Balance는 SimpleXmlElement를 반환합니다. 두 번 돌리십시오.

$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 –

관련 문제