Me imagino que es porque al analizador en realidad no le importan los separadores de grupo, son irrelevantes para el proceso de conversión de una cadena a un decimal.
Los llamamos separadores de miles, pero en realidad no lo son. Son separadores de grupos: puede dividir cada 3 dígitos, cada 10 dígitos, cada 1 dígito, entonces ¿por qué no cada 0 dígitos?
Curiosamente, el código ha cambiado para .NET 4 - esta es la salida relevante de reflector para mí:
else
{
if (((currencySymbol == null) ||
((chPtr2 = MatchChars(p, currencySymbol)) == null)) &&
((ansiCurrencySymbol == null) ||
((chPtr2 = MatchChars(p, ansiCurrencySymbol)) == null)))
{
break;
}
num |= 0x20;
currencySymbol = null;
ansiCurrencySymbol = null;
p = chPtr2 - 1;
}
he comprobarlo en .NET4.0. Se plantea una excepción de formato – HuBeZa
¿Qué cultura estás usando? Esas cadenas no se pueden analizar usando mi cultura actual o la cultura invariante. – LukeH
Creo que es una pereza de programador. No he visto un lugar que use miles de separadores sin mucha importancia. – HuBeZa