Próbuję przeanalizować dwie wartości z siatki danych. Pola są numeryczne, a gdy mają przecinek (np. 554,20), nie mogę uzyskać liczb po przecinku. Próbowałem parseInt
i parseFloat
. W jaki sposób mogę to zrobić?
javascript
parsing
floating-point
Kamil Kiełczewski
źródło
źródło
Odpowiedzi:
Jeśli mają to być osobne wartości, spróbuj tego:
Jeśli mają być pojedynczą wartością (jak w języku francuskim, gdzie połowa jest zapisana 0,5)
źródło
+(string)
zamiastparseString(string)
sugerowanego przez @Stev poniżej. Tak więc pierwszym przykładem byłbyv1 = +(values[0]); v2 = +(values[1]);
.6.000.000
. Funkcja zamiany zastępuje tylko pierwszy separator przecinkówCzy kiedykolwiek próbowałeś to zrobić? : p
+ (ciąg) wyrzuci ciąg do pływaka.
Poręczny!
Aby rozwiązać problem, możesz zrobić coś takiego:
źródło
+(str)
rozwiązanie -parseFloat
ignoruje niepoprawne znaki po numerze,+(str)
zwracaNaN
w tych przypadkach, co jest dokładnie tym, czego potrzebuję.Zastąp przecinek kropką.
Zwróci tylko 554:
Zwróci 554,20:
W końcu możesz po prostu użyć:
Nie zapomnij o tym
parseInt()
należy go używać tylko do analizowania liczb całkowitych (bez zmiennoprzecinkowych). W twoim przypadku zwróci tylko 554. Dodatkowo wywołanie parseInt () na liczbach zmiennoprzecinkowych nie zaokrągli liczby: zajmie jej podłogę (najbliższa dolna liczba całkowita).Rozszerzony przykład odpowiedzi na pytanie Pedro Ferreiry z komentarzy:
Jeśli pole tekstowe zawiera tysiące kropek separujących, tak jak w
1.234.567,99
tych, można je wcześniej usunąć za pomocą innejreplace
:źródło
Jeśli rozszerzysz obiekt String w ten sposób ..
.. możesz uruchomić to w ten sposób
działa również z kropką
źródło
@GusDeCool lub ktoś próbuje zastąpić więcej niż jeden tysięcy separatory, jednym ze sposobów, aby to zrobić jest regex globalny wymienić:
/foo/g
. Pamiętaj tylko, że.
jest to metaznak, więc musisz uciec lub umieścić go w nawiasach (\.
lub[.]
). Oto jedna opcja:źródło
Możesz użyć tej funkcji. Zastąpi przecinki znakiem „”, a następnie przeanalizuje wartość Flaot, a następnie ponownie dostosuje wartość przecinków.
źródło
Miałem ten sam problem, tyle że nie wiedziałem z góry, jakie są separatory tysięcy i separator dziesiętny. W tym celu napisałem bibliotekę. Jeśli jesteś zainteresowany to tutaj: https://github.com/GuillaumeLeclerc/number-parsing
źródło
Próbować
źródło