Ich lese einige Daten aus einer CSV-Datei. Jede Zeile in der Datei hat einen Gleitkommawert.Korrigieren Sie die Float-Werte
- .123: beginnend mit einer Periode, also brauche ich, bevor Sie eine Null hinzufügen diese Werte können entweder.
- 1,23: mit einem Trennzeichen Komma ',' anstelle von Punkt, also muss ich das ändern.
- 1.2e3 mit einem exponentiellen Format, also muss ich es in Dezimalformat umwandeln.
Ich kann nicht die Funktion number_format
, weil ich nicht die Anzahl der Dezimalstellen festlegen können (die Float-Zahlen haben keine feste Länge des Dezimalteil und wir wollen, dass sie nehmen, wie sie sind keine Daten zu verlieren).
Hier ist was ich bisher versucht habe; Ich baute zwei Funktionen, wobei die erste die Schwimmer filtert, der zweite korrigiert sie, wenn der Filter false zurück:
function validateFloat($float){
if(!filter_var($float,FILTER_VALIDATE_FLOAT,array('flags' => FILTER_FLAG_ALLOW_FRACTION))){
return false;
}
}
function correctFloat($float){
if (validateFloat($float)==false){
$number = number_format($float,null,'.');
str_replace($number,'',$line);
}
}
Ich weiß nicht, wie die correctFloat
Funktion zu bauen. Irgendwelche Vorschläge ? Bin dankbar.
cool, was ist, wenn es mit beginnt ? – Somar
floatval pads es. Benutze das Update, das ich gerade falsch geschrieben habe "$ value" viel ... – nerdlyist
Das ist fantastisch! Danke. – Somar