Итак, чтобы ответить на оригинальный вопрос , почему это происходит:
В исходном коде для SimpleXMLDecoder (который, как я предполагаю, по функциональности похож на XMLDecoder), есть комментарий в функции simpleType ():
//return the value as a string, a boolean or a number.
//numbers that start with 0 are left as strings
//bForceObject removed since we'll take care of converting to a String or Number object later
числа, начинающиеся с 0, остаются в виде строк - Я думаю, они думали о телефонных номерах, но не о десятичных числах.
Кроме того, из-за какого-то хакерского неявного приведения у вас фактически есть три разных типа -
- "0,800": строка
- 11: int
- 11,3: номер