Converting a number with comma as decimal point to float Converting a number with comma as decimal point to float php php

Converting a number with comma as decimal point to float


Using str_replace() to remove the dots is not overkill.

$string_number = '1.512.523,55';// NOTE: You don't really have to use floatval() here, it's just to prove that it's a legitimate float value.$number = floatval(str_replace(',', '.', str_replace('.', '', $string_number)));// At this point, $number is a "natural" float.print $number;

This is almost certainly the least CPU-intensive way you can do this, and odds are that even if you use some fancy function to do it, that this is what it does under the hood.


This function is compatible for numbers with dots or commas as decimals

function floatvalue($val){            $val = str_replace(",",".",$val);            $val = preg_replace('/\.(?=.*\.)/', '', $val);            return floatval($val);}

This works for all kind of inputs (American or european style)

echo floatvalue('1.325.125,54'); // The output is 1325125.54echo floatvalue('1,325,125.54'); // The output is 1325125.54echo floatvalue('59,95');        // The output is 59.95echo floatvalue('12.000,30');    // The output is 12000.30echo floatvalue('12,000.30');    // The output is 12000.30


If you're using PHP5.3 or above, you can use numfmt_parse to do "a reversed number_format". If you're not, you stuck with replacing the occurrances with preg_replace/str_replace.