Un pensiero mi colpì mentre stavo scrivendo un pezzo di codice JavaScript che elaborava alcuni valori in virgola mobile. Qual è il simbolo del punto decimale in JavaScript? È sempre .
? O è specifico della cultura? E che dire di .toFixed()
e .parseFloat()
? Se sto elaborando un input utente, è probabile che includa il simbolo del separatore decimale specifico per la cultura locale.Qual è il simbolo del separatore decimale in JavaScript?
In definitiva mi piacerebbe scrivere un codice che supporti entrambi i punti decimali nell'input dell'utente - specifico della cultura e .
, ma non posso scrivere un codice del genere se non so cosa si aspetta JavaScript.
Aggiunto: OK, Rubens Farias suggests da guardare similar question che ha una risposta accettata pulito:
function whatDecimalSeparator() {
var n = 1.1;
n = n.toLocaleString().substring(1, 2);
return n;
}
Che bello, che mi permette di ottenere il punto locale decimale. Un passo verso la soluzione, senza dubbio.
Ora, la parte rimanente sarebbe determinare quale sia il comportamento di .parseFloat()
. Diverse risposte sottolineano che per i letterali in virgola mobile è valido solo lo .
. .parseFloat()
funziona allo stesso modo? O potrebbe richiedere il separatore decimale locale in alcuni browser? Esistono metodi diversi per l'analisi dei numeri in virgola mobile? Devo tirare fuori il mio da solo per essere sicuro?
@ Vilx- per quello che stai facendo, prenderei in considerazione l'uso dell'operatore unario (+) invece di 'parseFloat()'. Sarà molto più semplice quando si convalida l'input. Vedi la mia risposta aggiornata. –