Étant donné une représentation sous forme de chaîne d'un nombre, comment puis-je le convertir pour number
taper en TypeScript?
var numberString: string = "1234";
var numberValue: number = /* what should I do with `numberString`? */;
typescript
Paul0515
la source
la source
console.log(typeof <number><any>"1", typeof Number("1"))
s'imprimestring number
.Réponses:
Exactement comme en JavaScript , vous pouvez utiliser les
parseInt
ouparseFloat
fonctions, ou utilisez simplement le unaire+
opérateur:Toutes les techniques mentionnées auront un typage correct et analyseront correctement les chaînes entières décimales simples comme
"123"
, mais se comporteront différemment pour divers autres cas, éventuellement attendus (comme"123.45"
) et cas de coin (commenull
).Tableau tiré de cette réponse
la source
Pour ce faire, la méthode typographique serait la suivante:
comme répondu ici: https://stackoverflow.com/a/23440948/2083492
la source
isNaN
fonction.let a = Number('x') || 0;
-Number('x')
reviendraitNaN
, ce qui est "falsey". Par conséquent,a
serait attribué0.
beaucoup plus propre et sans doute (légèrement) plus rapide que l'utilisation de l'instruction ternaire et l'analyse deux fois.Pour nos collègues utilisateurs angulaires:
Au sein d' un modèle ,
Number(x)
etparseInt(x)
jette une erreur, et+x
n'a pas d' effet. Le casting valide serax*1
oux/1
.la source
Number
n'est pas dans la portée de l'évaluation. Vous pouvez écrireclass MyComponent { Number = Number; }
pour l'utiliser.Comme le montrent d'autres réponses ici, il existe plusieurs façons d'effectuer la conversion:
Je voudrais mentionner encore une chose
parseInt
.Lors de l'utilisation
parseInt
, il est logique de toujours passer le paramètre radix . Pour la conversion décimale, c'est10
. Il s'agit de la valeur par défaut du paramètre, c'est pourquoi il peut être omis. Pour binaire, c'est un2
et16
pour hexadécimal. En fait, tout radix compris entre 2 et 36 inclus.La
parseInt
fonction, eh bien, analyse les chaînes pour les convertir en nombres. Dans certaines implémentations JS,parseInt
analyse les zéros non significatifs comme octaux:Le fait que le code devienne plus clair est un effet secondaire agréable de la spécification du paramètre radix.
Depuis
parseFloat
que seules les expressions numériques sont analysées dans Radix 10, il n'est pas nécessaire d'avoir un paramètre Radix ici.Plus à ce sujet:
la source
Expliquant ce que Ryan a dit, TypeScript embrasse les idiomes JavaScript en général.
Tous les détails intéressants et approfondis de la conversion de type JavaScript .
la source
Vous pouvez suivre l'une des méthodes suivantes.
la source
Conversion de chaîne en nombre:
Dans Typescript, nous convertissons une chaîne en nombre de la manière suivante:
ParseInt()
: Cette fonction prend 2 arguments, le premier est une chaîne à analyser. Le second est le radix (la base dans les systèmes numériques mathématiques, par exemple 10 pour décimal et 2 pour binaire). Il retourne ensuite le nombre entier, si le premier caractère ne peut pas être converti en nombre,NaN
il sera retourné.ParseFloat()
: Prend comme argument la valeur que nous voulons analyser et retourne un nombre à virgule flottante. Si la valeur ne peut pas être convertie en nombre,NaN
est renvoyée.+
opérateur: L'opérateur, lorsqu'il est utilisé de manière appropriée, peut contraindre une valeur de chaîne en un nombre.Exemples:
Lequel utiliser?
ParseInt()
lorsque vous souhaitez convertir une chaîne en entier . Cependant, le type de données est toujours un flottant, car toutes les valeurs numériques sont des valeurs à virgule flottante dans TS . Utilisez également cette méthode lorsque vous devez spécifier la base du nombre que vous souhaitez analyser.ParseFloat()
lorsque vous devez analyser une chaîne en un nombre à virgule flottante .+
opérateur avant une chaîne pour le contraindre en un nombre à virgule flottante . L'avantage est que la syntaxe est très courte.la source
Le moyen le plus simple consiste à utiliser + strVal ou Number (strVal)
Exemples:
la source
Il existe des fonctions intégrées comme
parseInt()
,parseFloat()
etNumber()
dans Typescript, vous pouvez les utiliser.la source
Appelez la fonction avec => convertstring ('10 .00 ')
parseFloat (string) => Il peut être utilisé pour convertir en float, toFixed (4) => en combien de décimales
parseInt (str) => Il peut être utilisé pour convertir en entier
la source
Outil de conversion de numéro en ligne
Convertisseur de nombre
la source
Il y a trois façons
la source
Vous êtes nombreux à avoir un problème pour convertir les types de données difficiles à résoudre dans les situations de programmation ionique, car ce langage est nouveau, je vais détailler ici les instructions pour que l'utilisateur sache comment convertir les types ioniques en données de chaîne type entier.
Dans les langages de programmation tels que java, php, c, c ++, ... tous peuvent déplacer des données facilement, puis dans ionic peut également créer pour nous la conversion de données est également un moyen facile, notamment dans d'autres langages de programmation.
la source
si vous ne parlez que de types, comme d'autres l'ont dit, parseInt () etc retournera le type correct. De plus, si, pour une raison quelconque, la valeur peut être à la fois un nombre ou une chaîne et que vous ne voulez pas appeler parseInt (), les expressions typeof seront également converties au type correct:
la source
Voici une version modifiée de la fonction StrToNumber. Comme avant,
Cette réponse est une solution possible mieux adaptée à la question initiale que mon précédent post.
la source
dactylographié doit savoir que notre
var a
va être étherNumber || String
la source
Vous pouvez toujours utiliser l'option de diffusion. Tout d'abord, vous devez convertir votre objet en type "inconnu", puis le convertir en un type d'objet attendu.
la source
console.log(typeof <number><unknown>"1", typeof Number("1"))
va imprimerstring number
.