2012-03-29 2 views
2

Dies ist die Funktion FLOAT Zahl als INT für die Formatierung, wenn Dezimalteil 0.PHP Int + Float. Fehler oder Standardverhalten?

$formatted = (int)$i + $i - (int)$i; 

// $i = 15.12 , $formatted = 15.12 
// $i = 15.00 , $formatted = 15 

ist, aber es scheint ein Fehler in PHP zu sein. Ich habe im PHP-Handbuch keine Typumsetzung für die INT + FLOAT-Operation gefunden. In anderer Sprache, wie C++ INT + FLOAT = FLOAT.

Antwort

1
<?php 

$i = 15.00; 

$formatted = (int)$i + $i - (int)$i; 

var_dump($formatted); 


float(15) 

Es ist immer noch ein float.

Der Grund für die 00 ist erhalten nicht gezeigt, weil es genau Wenn Sie die Zahl wissen 15.

ist genau 15, und Sie wissen nicht, den Kontext, in dem es kam, dann können Sie nicht nehme jede Genauigkeit an.

Zum Beispiel, würden Sie erwarten $ f = (float) 15; um 15.00 zu zeigen? Nein natürlich nicht. Das gleiche Konzept gilt, nur in dem Kontext, in dem es ist, erwarte ich 15.00.

Sie können auch number_format() oder round() nützlich finden, es sei denn, dies war nur ein Experiment.

+0

Vielen Dank! Ich habe wirklich nicht versucht, $ formatierten Wert var_dump ... – Serge