Próbuję parsować dwie wartości z datagridu.
Pola są numeryczne, a gdy mają przecinek (np. 554,20), nie mogę uzyskać liczb po przecinku.
Próbowałem już parseInt
i parseFloat
. Jak mogę to zrobić?Jak przekonwertować ciąg na float w JavaScript?
Odpowiedz
Jeśli oni miało być odrębne wartości, spróbuj tego:
var values = "554,20".split(",")
var v1 = parseFloat(values[0])
var v2 = parseFloat(values[1])
Jeśli oni miało być pojedynczą wartość (jak w języku francuskim, gdzie jedna połowa jest napisane 0,5)
var value = parseFloat("554,20".replace(",", "."));
A gdzie masz przecinek używany jako tysiąc seperatora? E.g. 1234 napisany jako 1 2334 –
Możesz po prostu usunąć przecinek, a następnie przeanalizować go. (np. zamień go na "") –
nie jest bardzo bezpieczny, jak sconto = parseFloat ("5,, 5" .replace (",", ".")); zwraca 5 wiodących, aby uwierzyć, że jest to poprawna liczba, ale tracisz część .5 lub możesz uznać, że to nie jest poprawna liczba. – max4ever
Zamień przecinek na kropkę.
ten powróci tylko 554:
var value = parseFloat("554,20")
ten powróci 554.20:
var value = parseFloat("554.20")
więc w końcu, można po prostu użyć:
var fValue = parseFloat(document.getElementById("textfield").value.replace(",","."))
Nie zapomnij że parseInt()
powinno być używane tylko do analizowania liczb całkowitych (bez liczb zmiennoprzecinkowych). W twoim przypadku zwróci on tylko 554. Dodatkowo, wywołanie funkcji parseInt() na float nie zaokrągli liczby: zajmie jej piętro (najbliższa niższa liczba całkowita).
Co o separator tysięcy? Jak 4,554,20, co powróci ...? –
Czy kiedykolwiek próbowałeś to zrobić? : p
var str = '3.8';ie
alert(+(str) + 0.2);
+ (ciąg znaków) rzuci łańcuch w spławik.
Handy!
Tak więc w celu rozwiązania problemu, można zrobić coś takiego:
var floatValue = +(str.replace(/,/,'.'));
Bardzo podoba mi się rozwiązanie '+ (str)' - parametr 'parseFloat' ignoruje nieprawidłowe znaki po numerze,' + (str) 'zwraca' NaN' w tych przypadkach, co jest dokładnie tym, czego potrzebuję. – Alex
Wygląda na to, że jest to najlepsza odpowiedź, podobnie jak w przypadku rzutowania na int przez dwukrotne zmienianie znaku z ~, jak w ~~ "45.2" = 45 –
Jeśli przedłużyć obiekt String tak ..
String.prototype.float = function() {
return parseFloat(this.replace(',', '.'));
}
.. można go uruchomić w ten sposób
"554,20".float()
> 554.20
współpracuje z kropką oraz
"554.20".float()
> 554.20
typeof "554,20".float()
> "number"
Chociaż zwykle uważa się za złą formę modyfikowanie prototypów obiektów podstawowych. Co by było, gdyby inne ramy również tego próbowały, ale funkcjonalność była różna? – phreakhead
@GusDeCool lub ktokolwiek inny próbuje zastąpić więcej niż jeden separator tysięcy, jednym ze sposobów jest zastąpienie globalnego regex: /foo/g
. Pamiętaj tylko, że .
jest metaznakiem, więc musisz go uciec lub umieścić w nawiasach (\.
lub [.]
). Oto jedna opcja:
var str = '6.000.000';
str.replace(/[.]/g,",");
tak, zamiennik bez regex zastępuje tylko jedno wystąpienie znaku. – Aukhan
miałem ten sam problem, z wyjątkiem, że nie wiem z góry, jakie były tysiące separatory i Separator dziesiętny. Skończyłem na pisaniu biblioteki, żeby to zrobić. Jeśli Cię to interesuje: https://github.com/GuillaumeLeclerc/number-parsing
Możesz użyć tej funkcji.Zastąpi przecinki "", a następnie przeanalizuje wartość, a następnie ponownie dostosuje przecinki do wartości.
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. Jak przekonwertować ciąg na float w mysql?
- 2. Jak przekonwertować ciąg na float lub int?
- 3. Jak przekonwertować ciąg na numer (float) w Perl
- 4. Jak przekonwertować ciąg lua do float
- 5. Jak przekonwertować float lub walutę na zlokalizowany ciąg znaków?
- 6. Jak przekonwertować Char na Float
- 7. mssql przekonwertować varchar na float
- 8. Konwertuj ciąg znaków na float?
- 9. przekonwertować ciąg JavaScript Object
- 10. Jak przekonwertować 4 bajty na Swift float?
- 11. JavaScript, aby przekonwertować ciąg na numer?
- 12. Jak przekonwertować ciąg znaków na wykonywalny wiersz kodu w JavaScript?
- 13. jak przekonwertować ciąg znaków na uniksowy znacznik czasu w javascript?
- 14. Jak przekonwertować obiekt zdarzenia na ciąg w JavaScript?
- 15. JavaScript Float + Float = String?
- 16. jak przekonwertować ciąg c na ciąg d?
- 17. Jak przekonwertować ciąg na CharSequence?
- 18. Jak przekonwertować BeautifulSoup.ResultSet na ciąg
- 19. Jak przekonwertować uint32 na ciąg?
- 20. Jak przekonwertować ciąg na NSData
- 21. Jak przekonwertować znak na ciąg?
- 22. Jak przekonwertować JSON na ciąg?
- 23. Jak przekonwertować ciąg na bitset?
- 24. Jak przekonwertować ciąg na długi
- 25. jak przekonwertować NSinteger na ciąg
- 26. Jak przekonwertować ciąg na BigInteger?
- 27. Jak przekonwertować ciąg [] na ArrayList?
- 28. Jak przekonwertować Writer na ciąg
- 29. Jak przekonwertować ciąg na android.net.Uri
- 30. Jak przekonwertować wartość float na liczbę całkowitą w php?
** zobacz także: "" ** http://stackoverflow.com/questions/24318654 – dreftymac