Biorąc pod uwagę ciąg znaków reprezentujący liczbę, w jaki sposób mogę przekonwertować go na number
czcionkę TypeScript?
var numberString: string = "1234";
var numberValue: number = /* what should I do with `numberString`? */;
typescript
Paul0515
źródło
źródło
console.log(typeof <number><any>"1", typeof Number("1"))
wydrukujestring number
.Odpowiedzi:
Dokładnie jak w JavaScript , możesz użyć
parseInt
alboparseFloat
funkcje, lub po prostu użyć jednoargumentowy+
operator:Wszystkie wymienione techniki będą miały poprawne pisanie i poprawnie parsują proste ciągi dziesiętne, takie jak
"123"
, ale będą zachowywać się inaczej dla różnych innych, prawdopodobnie oczekiwanych, przypadków (jak"123.45"
) i narożników (jaknull
).Tabela pochodzi z tej odpowiedzi
źródło
Typowym sposobem na zrobienie tego byłoby:
zgodnie z odpowiedzią tutaj: https://stackoverflow.com/a/23440948/2083492
źródło
isNaN
funkcji.let a = Number('x') || 0;
-Number('x')
powróciNaN
, co oznacza „falsey”. Dlategoa
zostałby przypisany0.
Znacznie czystszy i prawdopodobnie (nieco) szybszy niż dwukrotne użycie instrukcji trójskładnikowej.Dla naszych innych użytkowników Angular:
Wewnątrz szablonu ,
Number(x)
iparseInt(x)
zgłasza błąd, i+x
nie ma żadnego wpływu. Prawidłowy casting tox*1
lubx/1
.źródło
Number
nie wchodzi w zakres oceny. Możesz napisać,class MyComponent { Number = Number; }
aby z niego skorzystać.Jak pokazują inne odpowiedzi tutaj, istnieje wiele sposobów konwersji:
Chciałbym jednak wspomnieć o jeszcze jednej sprawie
parseInt
.Podczas używania
parseInt
sensowne jest zawsze przekazywanie parametru radix . To znaczy do konwersji dziesiętnej10
. Jest to domyślna wartość parametru, dlatego można ją pominąć. W przypadku plików binarnych jest to a,2
a16
w systemie szesnastkowym. Właściwie każda podstawa między 2 a 36 włącznie.Ta
parseInt
funkcja analizuje ciągi, aby przekonwertować je na liczby. W niektórych implementacjach JSparseInt
analizuje zera wiodące jako ósemkowe:Fakt, że kod staje się wyraźniejszy, jest miłym efektem ubocznym określenia parametru radix.
Ponieważ
parseFloat
analizuje tylko wyrażenia liczbowe w Radix 10, nie ma potrzeby tutaj parametru Radix.Więcej na ten temat:
źródło
Wyjaśniając to, co powiedział Ryan, TypeScript obejmuje ogólnie idiomy JavaScript.
Wszystkie interesujące szczegółowe informacje na temat konwersji typów JavaScript .
źródło
Możesz wykonać jeden z następujących sposobów.
źródło
Konwersja ciągu na liczbę:
W Typescript konwertujemy ciąg na liczbę w następujący sposób:
ParseInt()
: Ta funkcja przyjmuje 2 argumenty, pierwszy to ciąg do analizy. Drugi to podstawa (podstawa w matematycznych systemach liczbowych, np. 10 dla dziesiętnych i 2 dla binarnych). Następnie zwraca liczbę całkowitą, jeśli pierwszy znak nie może zostać przekształcony w liczbę,NaN
zostanie zwrócony.ParseFloat()
: Bierze jako argument wartość, którą chcemy przeanalizować, i zwraca liczbę zmiennoprzecinkową. Jeśli wartości nie można przekonwertować na liczbę,NaN
zwracana jest.+
operator: Operator, gdy jest odpowiednio używany, może zmusić wartość ciągu do liczby.Przykłady:
Którego użyć?
ParseInt()
gdy chcesz przekonwertować ciąg na liczbę całkowitą . Jednak typ danych jest wciąż zmiennoprzecinkowy, ponieważ wszystkie wartości liczbowe są wartościami zmiennoprzecinkowymi w TS . Skorzystaj również z tej metody, jeśli chcesz określić podstawę liczby, którą chcesz przeanalizować.ParseFloat()
gdy potrzebujesz parsować ciąg znaków na liczbę zmiennoprzecinkową .+
operatora przed ciągiem, aby przekonwertować go na liczbę zmiennoprzecinkową . Zaletą tego jest to, że składnia jest bardzo krótka.źródło
Najłatwiejszym sposobem jest użycie + strVal lub Number (strVal)
Przykłady:
źródło
Są wbudowane funkcje, takie jak
parseInt()
,parseFloat()
iNumber()
na maszynie, można użyć tych.źródło
Wywołaj funkcję za pomocą => convertstring ('10 .00 ')
parseFloat (string) => Można go użyć do konwersji na zmiennoprzecinkowe, toFixed (4) => do liczby miejsc po przecinku
parseInt (str) => Można go użyć do konwersji na liczbę całkowitą
źródło
Narzędzie do konwersji numerów online
Konwerter liczb
źródło
Istnieją trzy sposoby
źródło
Wielu z was ma problem z konwersją typów danych, które są trudne do rozwiązania w programowaniu jonowym, ponieważ ten sam język jest nowy, tutaj szczegółowo opiszę instrukcje dla użytkownika, aby wiedzieć, jak przekonwertować typy danych jonowych na dane łańcuchowe wpisz liczbę całkowitą.
W językach programowania, takich jak java, php, c, c ++, ... wszystko może łatwo przenosić dane, a następnie w jońskim może również tworzyć dla nas konwersję danych, jest to również łatwy sposób, również w innych językach programowania.
źródło
jeśli mówimy tylko o typach, jak powiedzieli inni, parseInt () itp. zwróci poprawny typ. Ponadto, jeśli z jakiegokolwiek powodu wartością może być zarówno liczba, jak i ciąg znaków, a użytkownik nie chce wywoływać funkcji parseInt (), wyrażenia typeof również będą rzutowane na poprawny typ:
źródło
Oto zmodyfikowana wersja funkcji StrToNumber. Jak wcześniej,
Ta odpowiedź jest możliwym rozwiązaniem, które lepiej pasuje do pytania początkowego niż mój poprzedni post.
źródło
maszynopis musi wiedzieć, że nasz
var a
będzie eteremNumber || String
źródło
Zawsze możesz użyć opcji rzutowania. Najpierw musisz przekonwertować obiekt na typ „nieznany”, a następnie rzutować go na oczekiwany typ obiektu.
źródło
console.log(typeof <number><unknown>"1", typeof Number("1"))
wydrukujestring number
.