Jedną z zabawnych części programowania wielokulturowego są formaty liczbowe.Analiza liczby zmiennoprzecinkowej: Czy istnieje algorytm Catch All?
- Amerykanie użyć 10,000.50
- Niemcom wykorzystać 10.000,50
- Francuzi używają 10 000,50
Moje pierwsze podejście byłoby podjęcie ciąg, przetworzyć go do tyłu, aż napotkasz separator i używaj tego jako separatora dziesiętnego. Występuje w tym oczywisty błąd: 10.000 będzie interpretowane jako 10.
Inne podejście: jeśli ciąg zawiera 2 różne nie-numeryczne znaki, użyj ostatniego jako separatora dziesiętnego i odrzuć pozostałe. Jeśli mam tylko jedną, sprawdź, czy występuje więcej niż raz i odrzuć ją, jeśli tak się stanie. Jeśli pojawi się tylko raz, sprawdź, czy ma po nim 3 cyfry. Jeśli tak, odrzuć go, w przeciwnym razie użyj go jako separatora dziesiętnego.
Oczywistym "najlepszym rozwiązaniem" byłoby wykrycie kultury użytkownika lub przeglądarki, ale to nie działa, jeśli masz Francuza za pomocą en-US Windows/Browser.
Czy .NET Framework zawiera jakiś mityczny analizator zmiennoprzecinkowy z czarną magią, który jest lepszy niż Double.(Try)Parse()
w próbie automatycznego wykrycia formatu liczbowego?