number
数値の文字列表現が与えられた場合、TypeScriptでそれをタイプに変換するにはどうすればよいですか?
var numberString: string = "1234";
var numberValue: number = /* what should I do with `numberString`? */;
number
数値の文字列表現が与えられた場合、TypeScriptでそれをタイプに変換するにはどうすればよいですか?
var numberString: string = "1234";
var numberValue: number = /* what should I do with `numberString`? */;
JavaScriptの場合とまったく同じようparseInt
に、またはparseFloat
関数を使用するか、単項演算子を使用する+
ことができます。
var x = "32";
var y: number = +x;
上記のすべての手法は正しい入力を行い、のような単純な10進整数文字列を正しく解析しますが"123"
、他のさまざまな、おそらく予想されるケース(のような"123.45"
)とコーナーケース(のような)では動作が異なりnull
ます。
この回答
から取られた表
これを行うTypescriptの方法は次のようになります。
Number('1234') // 1234
Number('9BX9') // NaN
ここで答えられるように:https ://stackoverflow.com/a/23440948/2083492
私たちの仲間のAngularユーザーの場合:
テンプレート内で、エラーNumber(x)
をスローし、効果はありません。有効なキャストはまたはになります。parseInt(x)
+x
x*1
x/1
ここで他の回答が示すように、変換を行うには複数の方法があります。
Number('123');
+'123';
parseInt('123');
parseFloat('123.45')
ただし、もう1つ言及したいと思いparseInt
ます。
を使用する場合は、常に基数パラメーターを渡すのparseInt
が理にかなっています。10進変換の場合、それはです。これはパラメータのデフォルト値であるため、省略できます。2進数の場合は、16進数の場合です。実際には、2と36の間の基数が機能します。10
2
16
parseInt('123') // 123 (don't do this)
parseInt('123', 10) // 123 (much better)
parseInt('1101', 2) // 13
parseInt('0xfae3', 16) // 64227
一部のJS実装では、parseInt
先行ゼロを8進数として解析します。
ECMAScript 3では推奨されておらず、ECMAScript 5では禁止されていますが、多くの実装では、先頭の0で始まる数値文字列を8進数として解釈します。次の結果は8進数の結果になる場合と、10進数の結果になる場合があります。この信頼性の低い動作を回避するために、常に基数を指定してください。
— MDN
コードがより明確になるという事実は、基数パラメーターを指定することの良い副作用です。
parseFloat
基数10の数式のみを解析するため、ここでは基数パラメーターは必要ありません。
これについての詳細:
ライアンが言ったことを説明すると、TypeScriptは一般的にJavaScriptイディオムを採用しています。
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()
JavaScript型変換でのすべての興味深い詳細。
Typescriptでは、次の方法で文字列を数値に変換します。
parseInt()
:この関数は2つの引数を取ります。最初の引数は、解析する文字列です。2番目は基数です(数学数値システムのベース。たとえば、10進数の場合は10、2進数の場合は2)。次に整数を返します。最初の文字を数値に変換できない場合は、整数NaN
が返されます。parseFloat()
:解析したい値を引数として取り、浮動小数点数を返します。値を数値に変換できない場合は、NaN
が返されます。+
演算子:演算子を適切に使用すると、文字列値を数値に強制変換できます。/* parseInt */
// note that a whole number is returned, so it will round the number
console.log(parseInt('51.023124'));
// parseInt will 'cut off' any part of the string which is not a number
console.log(parseInt('5adfe1234'));
// When the string starts with non number NaN is returned
console.log(parseInt('z123'));
console.log('--------');
/* parseFloat */
// parses the string into a number and keeping the precision of the number
console.log(typeof parseFloat('1.12321423'));
// parseFloat will 'cut off' any part of the string which is not a number
console.log(parseFloat('5.5abc'));
console.log('--------');
/* + operator */
let myString = '12345'
console.log(typeof +myString);
let myOtherString = '10ab'
// + operator will not cut off any 'non number' string part and will return NaN
console.log(+myOtherString);
parseInt()
します。ただし、 TSではすべての数値が浮動小数点値であるため、データ型は依然として浮動小数点数です。また、解析する数値の基数を指定する必要がある場合にも、このメソッドを使用します。parseFloat()
に解析する必要がある場合に使用します。+
に強制変換できます。これの利点は、構文が非常に短いことです。次のいずれかの方法に従うことができます。
var str = '54';
var num = +str; //easy way by using + operator
var num = parseInt(str); //by using the parseInt operation
最も簡単な方法は、+ strValまたはNumber(strVal)を使用することです。
例:
let strVal1 = "123.5"
let strVal2 = "One"
let val1a = +strVal1
let val1b = Number(strVal1)
let val1c = parseFloat(strVal1)
let val1d = parseInt(strVal1)
let val1e = +strVal1 - parseInt(strVal1)
let val2a = +strVal2
console.log("val1a->", val1a) // 123.5
console.log("val1b->", val1b) // 123.5
console.log("val1c->", val1c) // 123.5
console.log("val1d->", val1d) // 123
console.log("val1e->", val1e) // 0.5
console.log("val2a->", val2a) // NaN
のような組み込み関数があり、parseInt()
Typescriptではそれらを使用できます。parseFloat()
Number()
var myNumber: number = 1200;
//convert to hexadecimal value
console.log(myNumber.toString(16)); //will return 4b0
//Other way of converting to hexadecimal
console.log(Math.abs(myNumber).toString(16)); //will return 4b0
//convert to decimal value
console.log(parseFloat(myNumber.toString()).toFixed(2)); //will return 1200.00
=> convertstring( '10.00')で関数を呼び出します
parseFloat(string)=> floatに変換するために使用でき、toFixed(4)=>小数点以下の桁数に変換できます
parseInt(str)=>整数に変換するために使用できます
convertstring(string){
let number_parsed: any = parseFloat(string).toFixed(4)
return number_parsed
}
3つの方法があります
let a = + '12';
let b = parseInt('12' , 10); // 10 means decimal number
let c = Number('12');
typescriptは、私たちvar a
がエーテルになることを知る必要がありますNumber || String
export type StringOrNumber = number | string;
export function toString (v: StringOrNumber) {
return `${v}`;
}
export function toNumber (v: StringOrNumber) {
return Number(v);
}
export function toggle (v: StringOrNumber) {
return typeof v === "number" ? `${v}` : Number(v);
}
他の人が言ったように、型だけについて話している場合、parseInt()などは正しい型を返します。また、何らかの理由で値が数値または文字列の両方である可能性があり、parseInt()を呼び出したくない場合は、typeof式も正しい型にキャストされます。
function f(value:number|string){
if(typeof value==='number'){
// value : number
}else {
// value : string
}
}
イオンプログラミングの状況ではデータ型の変換が難しいという問題を抱えている方がたくさんいます。この言語はまったく新しいため、ここでは、データ型を文字列データに変換する方法をユーザーが理解するための手順を詳しく説明します。整数型。
java、php、c、c ++などのプログラミング言語では、すべてがデータを簡単に移動できます。次に、ionicでもデータ変換を作成できます。これは、他のプログラミング言語でも簡単な方法です。
this.mPosition = parseInt("");
これは、StrToNumber関数の修正バージョンです。従来通り、
この回答は、以前の投稿よりも最初の質問に適した解決策となる可能性があります。
static StrToNumber(val: string, defaultVal:number = 0): number
{
let result:number = defaultVal;
if(val == null)
return result;
if(val.length == 0)
return result;
val = val.trim();
if(val.length == 0)
return(result);
let sign:number = 1;
//
// . obtain sign from string, and place result in "sign" local variable. The Sign naturally defaults to positive
// 1 for positive, -1 for negative.
// . remove sign character from val.
// Note, before the function returns, the result is multiplied by the sign local variable to reflect the sign.
// . error check for multiple sign characters
// . error check to make sure sign character is at the head or tail of the string
//
{
let positiveSignIndex = val.indexOf('+');
let negativeSignIndex = val.indexOf('-');
let nTailIndex = val.length-1;
//
// make sure both negative and positive signs are not in the string
//
if( (positiveSignIndex != -1) && (negativeSignIndex != -1) )
return result;
//
// handle postive sign
//
if (positiveSignIndex != -1)
{
//
// make sure there is only one sign character
//
if( (positiveSignIndex != val.lastIndexOf('+')) )
return result;
//
// make sure the sign is at the head or tail
//
if( (positiveSignIndex > 0) && (positiveSignIndex < nTailIndex ) )
return result;
//
// remove sign from string
//
val = val.replace("+","").trim();
}
//
// handle negative sign
//
if (negativeSignIndex != -1)
{
//
// make sure there is only one sign character
//
if( (negativeSignIndex != val.lastIndexOf('-')) )
return result;
//
// make sure the sign is at the head or tail
//
if( (negativeSignIndex > 0) && (negativeSignIndex < nTailIndex ) )
return result;
//
// remove sign from string
//
val = val.replace("-","").trim();
sign = -1;
}
//
// make sure text length is greater than 0
//
if(val.length == 0)
return result;
}
//
// convert string to a number
//
var r = +(<any>val);
if( (r != null) && (!isNaN(r)) )
{
result = r*sign;
}
return(result);
}
使用できる最新バージョンでは、次のas
例を使用できます。
var numberString: string = "1234";
const numberValue = numberString as number;