TypeScript konwertujący Łańcuch znaków na liczbę
Ktoś może podpowie jak zamienić łańcuch znaków na liczbę w maszynopisie?
var aNumber : number = "1"; // --> Error
// Could this be done?
var defaultValue = 0;
var aNumber : number = "1".toInt32(defaultValue);
// Or ..
var defaultValue = 0;
var aNumber : number = StringToInt("1", defaultValue);
Update: Zrobiłem kilka dodatkowych zagadek, najlepszy sofar jaki wymyśliłem: var aNumber: liczba = ( "1") * 1;
Sprawdzanie, czy łańcuch jest numeryczny, można znaleźć tutaj: w maszynopisie, jak sprawdzić, czy łańcuch jest numeryczny.
7 answers
Możesz użyć funkcji parseInt
lub parseFloat
lub po prostu użyć operatora uniary +
:
var x = "32";
var y = +x; // y: number
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-03 01:19:52
Sposobem na to jest:
Number('1234') // 1234
Number('9BX9') // NaN
Jako odpowiedź tutaj: https://stackoverflow.com/a/23440948/2083492
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:28
Dla naszych kolegów:
W szablonie , Number(x)
i parseInt(x)
wyrzuca błąd, i +x
nie ma żadnego efektu. Poprawny casting będzie x*1
lub x/1
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-21 10:19:57
Tłumacząc to, co powiedział Ryan, TypeScript obejmuje idiomy JavaScript w ogóle.
var n = +"1"; // the unary + converts to number
var b = !!"2"; // the !! converts truthy to true, and falsy to false
var s = ""+3; // the ""+ converts to string via toString()
Wszystkie interesujące szczegóły w JavaScript Type Conversion .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-05 13:43:38
Jak pokazują inne odpowiedzi tutaj, istnieje wiele sposobów na konwersję:
Number('123');
+'123';
parseInt('123');
parseFloat('123.45')
[[10]}chciałbym jednak wspomnieć o jeszcze jednej rzeczy na parseInt
.
Podczas używania parseInt
, sensowne jest, aby zawsze podawać parametr radix. Dla konwersji dziesiętnej, czyli 10
. Jest to wartość domyślna dla parametru, dlatego Może zostać pominięta. Dla kodu binarnego jest to 2
i 16
dla kodu szesnastkowego. Właściwie każdy radix między 2 A 36 włącznie działa.
parseInt('123') // 123 (don't do this)
parseInt('123', 10) // 123 (much better)
parseInt('1101', 2) // 13
parseInt('0xfae3', 16) // 64227
Funkcja parseInt
parsuje łańcuchy, aby przekonwertować je na liczby. W niektórych implementacjach JS parseInt
parsuje zera wiodące jako ósemkowe:
Chociaż zniechęcony przez ECMAScript 3 i zabroniony przez ECMAScript 5, wiele implementacji interpretuje ciąg liczbowy zaczynający się od 0 jako ósemkę. Poniższe mogą mieć wynik ósemkowy lub wynik dziesiętny. zawsze podaj radix, aby uniknąć tego zawodnego zachowania.
- MDN
Fakt, że kod staje się jaśniejszy, jest miłym efektem ubocznym określenia parametru radix.
Ponieważ parseFloat
parsuje tylko wyrażenia liczbowe w radix 10, nie ma tu potrzeby stosowania parametru radix.
Więcej na ten temat:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-10 19:31:22
Możesz wykonać jeden z następujących sposobów.
var str = '54';
var num = +str; //easy way by using + operator
var num = parseInt(str); //by using the parseInt operation
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-21 05:51:09
Istnieją wbudowane funkcje takie jak parseInt()
, parseFloat()
i Number()
w maszynopisie, możesz ich użyć.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-31 08:16:05