Давайте посмотрим на это
У меня есть число с плавающей запятой 32 000, 00, и оно анализирует
Нет, у вас есть строка "32 000, 00"
.Поэтому, если мы посмотрим, как PHP выполняет жонглирование типов
http://php.net/manual/en/language.types.type-juggling.php
Мы увидим несколько примеров, подобных этому:
$foo = 5 * "10 Little Piggies"; // $foo is integer (50)
Таким образом, значение этих 2 умножается50
или 5*10
Десятка разбирается с "10 Little Piggies"
.PHP будет применять те же правила к тому, что у вас есть выше, что приводит к 32
.Потому что это строка с этими spaces
PHP будет делать это почти точно так же, как описано выше.
Вы можете легко проверить это:
echo floatval('32 000, 00');
Output
32
Песочница
Возможно, вам придется вручную преобразовать это в то, что должно быть.Легко сделать, просто убрав пробелы:
echo floatval(str_replace([' ',','], ['','.'], '32 000, 00'));
#output 32000
echo floatval(str_replace([' ',','], ['','.'], '32 290,01'));
#output 32290.01
Если я правильно помню, некоторые страны используют ,
в качестве .
для десятичного разделителя.Но мне пришлось заменить ,
на .
, чтобы заставить их работать ... Могут быть некоторые крайние случаи, когда это не сработает, но без большей выборки данных я не могу сказать наверняка.
Где или почему там эти пространства, я понятия не имею.Было бы лучше полностью удалить их из XML, но это может оказаться невозможным.
Без какого-либо реального кода в вопросе это лучшее, что я могу сделать.
Приветствия!