Pomysł mnie uderzył, gdy pisałem fragment kodu JavaScript, który przetwarzał niektóre wartości zmiennoprzecinkowe. Co to jest symbol punktu dziesiętnego w JavaScript? Czy zawsze jest to .
? Czy jest to specyficzne dla kultury? A co z .toFixed()
i .parseFloat()
? Jeśli przetwarzam dane wejściowe użytkownika, najprawdopodobniej uwzględniony zostanie lokalny symbol separatora dziesiętnego specyficzny dla kultury.Jaki jest separator dziesiętny w JavaScript?
Ostatecznie chciałbym napisać kod, który obsługuje zarówno liczbę dziesiętną w danych wejściowych użytkownika - specyficzne dla kultury i .
, ale nie mogę napisać takiego kodu, jeśli nie wiem, czego JavaScript oczekuje.
Dodano: OK Rubens Farias suggests patrzeć similar question który ma schludny odpowiedź przyjętych:
function whatDecimalSeparator() {
var n = 1.1;
n = n.toLocaleString().substring(1, 2);
return n;
}
To miłe, to pozwala mi uzyskać punkt locale dziesiętny. Krok w stronę rozwiązania, bez wątpienia.
Pozostała część będzie polegała na określeniu zachowania .parseFloat()
. Kilka odpowiedzi wskazuje, że dla literałów zmiennoprzecinkowych ważne jest tylko .
. Czy .parseFloat()
działa w ten sam sposób? A może może wymagać lokalnego separatora dziesiętnego w niektórych przeglądarkach? Czy istnieją również inne metody analizowania liczb zmiennoprzecinkowych? Czy powinienem rozwinąć swoje własne, by być pewnym?
@ Vilx - dla tego, co robisz, rozważam użycie operatora unarnego (+) zamiast 'parseFloat()'. Będzie to znacznie łatwiejsze podczas sprawdzania danych wejściowych. Zobacz moją zaktualizowaną odpowiedź. –