Una de las partes divertidas de la programación multicultural son los formatos numéricos.Análisis de número de punto flotante: ¿Hay un algoritmo Catch All?
- estadounidenses utilizan 10,000.50
- alemanes utilizar 10.000,50
- uso Francés 10 000,50
Mi primer enfoque sería tomar la cadena, analizar hacia atrás, hasta que me encuentro con un separador y usar esto como mi separador decimal. Hay un error obvio con eso: 10.000 se interpretaría como 10.
Otro enfoque: si la cadena contiene 2 caracteres diferentes no numéricos, utilice el último como el separador decimal y descarte los otros. Si solo tengo uno, compruebe si ocurre más de una vez y deséchelo si lo hace. Si solo aparece una vez, verifique si tiene 3 dígitos después. Si es así, deséchelo, de lo contrario, utilícelo como separador decimal.
La "mejor solución" obvia sería detectar la cultura del usuario o el navegador, pero eso no funciona si tiene un francés que use un navegador/Windows en-US.
¿.net Framework contiene algún analizador de punto flotante de magia negra mítica que es mejor que Double.(Try)Parse()
al tratar de autodetectar el formato de número?