Sto cercando di analizzare due valori da un datagrid.
I campi sono numerici e quando hanno una virgola (ad esempio 554,20), non riesco a ottenere i numeri dopo la virgola.
Ho provato parseInt
e parseFloat
. Come posso fare questo?Come convertire la stringa in float in JavaScript?
risposta
Se sono destinate ad essere separare i valori, provate questo:
var values = "554,20".split(",")
var v1 = parseFloat(values[0])
var v2 = parseFloat(values[1])
Se sono destinate ad essere un singolo valore (come in francese, in cui la metà è scritto 0,5)
var value = parseFloat("554,20".replace(",", "."));
E dove si usa una virgola come mille separatore? E.g. 1234 scritto come 1.234 –
Si potrebbe semplicemente rimuovere la virgola, quindi analizzarla. (ad esempio, sostituirlo con "") –
non è molto sicuro, come sconto = parseFloat ("5,, 5" .replace (",", ".")); ritorna 5 che porta a credere che sia un numero valido, ma perdi la parte .5 o potresti considerare che non è un numero valido – max4ever
Sostituire la virgola con un punto.
Questo sarà solo tornare 554:
var value = parseFloat("554,20")
Ciò restituirà 554,20:
var value = parseFloat("554.20")
Così, alla fine, si può semplicemente utilizzare:
var fValue = parseFloat(document.getElementById("textfield").value.replace(",","."))
Non dimenticare che parseInt()
debba essere utilizzato solo per analizzare gli interi (senza virgola mobile). Nel tuo caso restituirà solo 554. Inoltre, chiamare parseInt() su un float non arrotonderà il numero: prenderà il suo piano (il più basso numero intero più vicino).
E il "" separatore di migliaia? Come 4.554,20 cosa tornerebbe ...? –
Avete mai provato a farlo? : p
var str = '3.8';ie
alert(+(str) + 0.2);
+ (stringa) esegue il cast della stringa.
Handy!
Quindi, al fine di risolvere il problema, si può fare qualcosa di simile:
var floatValue = +(str.replace(/,/,'.'));
Mi piace molto la soluzione '+ (str)' - 'parseFloat' ignora i caratteri non validi dopo il numero,' + (str) 'restituisce' NaN' in questi casi, che è esattamente quello di cui ho bisogno. – Alex
Questa sembra essere la risposta migliore, simile al cast di un int cambiando il segno due volte con ~, come in ~~ "45.2" = 45 –
Se si estende oggetto String come questo ..
String.prototype.float = function() {
return parseFloat(this.replace(',', '.'));
}
.. si può eseguire in questo modo
"554,20".float()
> 554.20
opere con dot così
"554.20".float()
> 554.20
typeof "554,20".float()
> "number"
Anche se di solito è considerata una cattiva forma modificare i prototipi dell'oggetto base. Cosa accadrebbe se anche un altro framework provasse a farlo, ma la funzionalità era diversa? – phreakhead
@GusDeCool o chiunque altro provi a sostituire più di mille separatori, un modo per farlo è una sostituzione globale regolare: /foo/g
. Ricorda che .
è un metacarattere, quindi devi scappare o metterlo tra parentesi (\.
o [.]
). Ecco una sola opzione:
var str = '6.000.000';
str.replace(/[.]/g,",");
sì, una sostituzione senza regex sostituisce solo un'occorrenza del carattere. – Aukhan
Ho avuto lo stesso problema, tranne che non sapevo in anticipo quali sono stati i separatori delle migliaia e il separatore decimale. Ho finito per scrivere una biblioteca per farlo. Se siete interessati, ecco: https://github.com/GuillaumeLeclerc/number-parsing
È possibile utilizzare questa funzione.Sostituirà le virgole con '' e quindi analizzerà il valore e dopo di ciò regolerà nuovamente le virgole in valore.
function convertToFloat(val) {
if (val != '') {
if (val.indexOf(',') !== -1)
val.replace(',', '');
val = parseFloat(val);
while (/(\d+)(\d{3})/.test(val.toString())) {
val = val.toString().replace(/(\d+)(\d{3})/, '$1' + ',' + '$2');
}
}
return val;
}
- 1. Come convertire la stringa esadecimale in float in Java?
- 2. Come convertire una stringa Lua in float
- 3. convertire un float in stringa in F #?
- 4. Converti la stringa in float?
- 5. Come convertire stringa in valore float in Android
- 6. Come convertire stringa in numero (float) in Perl
- 7. Come posso convertire una stringa in float in mysql?
- 8. Perché propel convertire la proprietà float in stringa?
- 9. Come convertire float o valuta in una stringa localizzata?
- 10. Come convertire un binario (stringa) in un valore float?
- 11. Impossibile convertire la matrice in float python
- 12. Come convertire questa stringa javascript in javascript serie/oggetto
- 13. Come convertire un float in esadecimale
- 14. Javascript per convertire stringa in numero?
- 15. Convertire intero array stringa in JavaScript
- 16. Javascript/Jquery Convertire stringa in serie
- 17. Come convertire una stringa in un oggetto XML in JavaScript?
- 18. come convertire la stringa percentuale in BigDecimal?
- 19. Come convertire la stringa base64 in immagine?
- 20. Come convertire la stringa in controllo?
- 21. come convertire la stringa binaria in decimale?
- 22. Come convertire la stringa in long
- 23. Come convertire stringa come nome del campo dell'oggetto in javascript
- 24. Come posso convertire la stringa in datetime con la specifica del formato in JavaScript?
- 25. Come convertire le stringhe in float con precisione perfetta?
- 26. python: come convertire la stringa letterale in stringa raw letterale?
- 27. Convertire un intero grande in una stringa esadecimale in Javascript
- 28. Come convertire PathBuf in stringa
- 29. Javascript Float + Float = String?
- 30. Come convertire stringa esadecimale in stringa java
** vedi anche: ** http://stackoverflow.com/questions/24318654 – dreftymac