টাইপস্ক্রিপ্টে কোনও স্ট্রিংকে সংখ্যায় রূপান্তর করবেন কীভাবে?


872

কোনও সংখ্যার একটি স্ট্রিং প্রতিনিধিত্ব দেওয়া, আমি কীভাবে এটিকে numberটাইপস্ক্রিপ্টে টাইপ করে রূপান্তর করতে পারি ?

var numberString: string = "1234";
var numberValue: number = /* what should I do with `numberString`? */;


2
@o_nix এটি সংকলকটিকে চালিত করে, এটি প্রকারের ধরণের পরিবর্তন করে না: console.log(typeof <number><any>"1", typeof Number("1"))মুদ্রণ করবে string number
k0pernikus

উত্তর:


1374

ঠিক জাভাস্ক্রিপ্টের মতো , আপনি parseIntবা parseFloatফাংশনগুলি ব্যবহার করতে পারেন , বা কেবল অনারেটর +অপারেটরটি ব্যবহার করতে পারেন :

var x = "32";
var y: number = +x;

উল্লিখিত সমস্ত কৌশলগুলির সঠিক টাইপিং থাকবে এবং সাধারণ দশমিক পূর্ণসংখ্যার স্ট্রিংকে সঠিকভাবে পার্স "123"করবে তবে এটি অন্যান্য, সম্ভবত প্রত্যাশিত, কেসগুলি (যেমন "123.45") এবং কোণার ক্ষেত্রে (যেমন null) এর জন্য আলাদাভাবে আচরণ করবে ।

রূপান্তর টেবিলএই উত্তর থেকে নেওয়া ছক


236
ছোট ইঙ্গিত: পার্সিয়ান্ট (নাল) NaN ফেরায় তবে + নাল 0
রবিন জে

17
এখানে ফিলিপের উচ্চ-রেটযুক্ত উত্তরের মতো ভাবপূর্ণ নয় যে এটি টাইপস্ক্রিপ্টের মতো করে।
প্যাট্রিক

10
টাইপস্ক্রিপ্টের কোনও উপায় নেই কারণ টাইপস্ক্রিপ্ট কেবল জাভাস্ক্রিপ্ট।
আজকের দিনগুলিতে

46
@ থাডায়টার্নগুলিতে প্রোগ্রামিংয়ের কোনও উপায় নেই যেহেতু প্রোগ্রামিংটি কেবল বিদ্যুৎ
জিরোচ

1
@ পেট্রিক নিশ্চিত নন যে আপনি কেন এটিকে "টাইপস্ক্রিপ্ট" বলছেন কারণ এটি কেবল সরল জাভাস্ক্রিপ্ট ...
স্যান্ডি গিফোর্ড

1087

এটি করার ধরণটি হ'ল:

Number('1234') // 1234
Number('9BX9') // NaN

এখানে উত্তর হিসাবে: https://stackoverflow.com/a/23440948/2083492


4
দ্রষ্টব্য: আপনি isNaNফাংশনটি ব্যবহার করে NaN পরীক্ষা করতে পারেন ।
হেইনরিচ উলব্রিচ

2
নোট করুন যে এটি কাজ করবে না: মান দিন: সংখ্যা = মানএস্ট্রিং;
yonexbat

1
আমি মনে করি নতুন নম্বর ("1234")। মানOf () আসলে আমরা সকলেই
খুঁজছি-

23
@ ডেভিড - আপনি সহজ করতে পারবেন let a = Number('x') || 0;- Number('x')ফিরে আসবে NaN, যা "মিথ্যা"। সুতরাং, বার্ষিকী বিবৃতি ব্যবহার এবং দুবার পার্সিংয়ের চেয়ে আরও বেশি ক্লিনার এবং যুক্তিযুক্তভাবে (সামান্য) aনিযুক্ত করা হবে 0.
জিফ জেমস

4
@ পল0515 আপনি সঠিক উত্তর হিসাবে এটি আপডেট করতে পারেন
ক্রিস ল্যাং

94

আমাদের সহকর্মী কৌনিক ব্যবহারকারীদের জন্য:

একটি টেম্পলেট মধ্যে , Number(x)এবং parseInt(x)একটি ত্রুটি নিক্ষেপ, এবং +xকোন প্রভাব আছে। বৈধ কাস্টিং হবে x*1বা x/1


এটা চমৎকার! যেমন আপনি এইচটিএমএল + এক্স-তে বলেছেন তেমন কোনও সংখ্যায় রূপান্তর করে না
sa_

3
কারণ Numberএটি মূল্যায়নের সুযোগে নেই। আপনি এটি ব্যবহার করতে লিখতে class MyComponent { Number = Number; }পারেন।
আলুয়ান হাদাদ

58

এখানে অন্যান্য উত্তরের হিসাবে দেখানো হয়েছে, রূপান্তরটি করার একাধিক উপায় রয়েছে:

Number('123');
+'123';
parseInt('123');
parseFloat('123.45')

তবে আমি আরও একটি বিষয় উল্লেখ করতে চাই parseInt

ব্যবহার করার সময় parseInt, সর্বদা র‌্যাডিক্স প্যারামিটারটি পাস করার অর্থ হয় । দশমিক রূপান্তর জন্য, যে 10। এটি প্যারামিটারের জন্য ডিফল্ট মান, যে কারণে এটি বাদ দেওয়া যেতে পারে। বাইনারি হিসাবে, এটি একটি 2এবং 16হেক্সাডেসিমালের জন্য। প্রকৃতপক্ষে, 2 এবং 36 টির মধ্যে এবং এর অন্তর্ভুক্ত কোনও রেডিক্স।

parseInt('123')         // 123 (don't do this)
parseInt('123', 10)     // 123 (much better)

parseInt('1101', 2)     // 13
parseInt('0xfae3', 16)  // 64227

parseIntফাংশন, ভাল, স্ট্রিং parses তাদের সংখ্যা রূপান্তর করবে। কিছু জেএস বাস্তবায়নে parseIntঅষ্টাল হিসাবে শীর্ষস্থানীয় শূন্যগুলি পার্স করে:

যদিও ECMAScript 3 দ্বারা নিরুৎসাহিত করা হয়েছে এবং ECMAScript 5 দ্বারা নিষিদ্ধ করা হয়েছে, অনেকগুলি বাস্তবায়ন সংখ্যাসূচক স্ট্রিংটিকে শুরুর সাথে অষ্টাল হিসাবে 0 হিসাবে শুরু করে interpret নিম্নলিখিতগুলির একটি অষ্টাল ফলাফল হতে পারে, বা এটির দশমিক ফলাফল হতে পারে। এই অবিশ্বাস্য আচরণ এড়াতে সর্বদা একটি রেডিক্স নির্দিষ্ট করুন।

- এমডিএন

কোডটি আরও স্পষ্ট হয়ে ওঠে এই বিষয়টি Radix পরামিতি নির্দিষ্ট করার জন্য একটি দুর্দান্ত পার্শ্ব প্রতিক্রিয়া।

যেহেতু parseFloatকেবলমাত্র দশমিক 10 এ সংখ্যাসূচক এক্সপ্রেশনগুলি বিশ্লেষণ করে, এখানে একটি রেডিক্স প্যারামিটারের প্রয়োজন নেই।

এ সম্পর্কে আরও:


এবং আরও একটি: 12 '123' (অভ্যন্তরীণ ToInt32 ব্যবহার করে)
# মারক্রুজ

@ এমমারক্রুজ সত্য, তবে আমি যদি এই শব্দার্থগতভাবে কার্যকর হয় তবে আমি বিতর্ক করব
ফ্যাবিয়ান লাউয়ার

52

রায়ান যা বলেছিলেন তা ব্যাখ্যা করে, টাইপস্ক্রিপ্ট সাধারণভাবে জাভাস্ক্রিপ্ট আইডিয়ামগুলিকে আলিঙ্গন করে।

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()

জাভাস্ক্রিপ্ট প্রকার রূপান্তর এ সমস্ত আকর্ষণীয় গভীরতার বিবরণ ।


22

আপনি নিম্নলিখিত দুটি উপায় অনুসরণ করতে পারেন।

var str = '54';

var num = +str; //easy way by using + operator
var num = parseInt(str); //by using the parseInt operation 

13

নম্বর রূপান্তর থেকে স্ট্রিং:

প্রকারভেদে আমরা একটি স্ট্রিংকে নিম্নলিখিত উপায়ে একটি সংখ্যায় রূপান্তর করি:

  • ParseInt(): এই ফাংশনটিতে 2 টি আর্গুমেন্ট লাগে, প্রথমটি পার্স করার একটি স্ট্রিং। দ্বিতীয়টি হ'ল রেডিক্স (গাণিতিক সংখ্যা পদ্ধতির ভিত্তি, যেমন দশমিকের জন্য 10 এবং বাইনারি হিসাবে 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);

কোনটি ব্যবহার করবেন?

  1. ParseInt()আপনি যখন পূর্ণসংখ্যায় স্ট্রিং রূপান্তর করতে চান তখন ব্যবহার করুন । যাইহোক, ডেটা টাইপ এখনও একটি ভাসমান, যেহেতু সমস্ত সংখ্যার মান টিএস-তে ভাসমান পয়েন্ট মান । আপনি যে সংখ্যার পার্স করতে চান তার রেডিক্স নির্দিষ্ট করার দরকার পরেও এই পদ্ধতিটি ব্যবহার করুন।
  2. ParseFloat()যখন আপনার কোনও ফ্লোটিং পয়েন্ট সংখ্যায় একটি স্ট্রিংকে পার্স করতে হবে তখন ব্যবহার করুন ।
  3. +কোনও স্ট্রিংয়ের পূর্বে অপারেটরটিকে একটি ভাসমান বিন্দুতে বাধ্য করতে ব্যবহার করতে পারেন । এর সুবিধাটি হ'ল সিনট্যাক্সটি খুব ছোট।

7

সবচেয়ে সহজ উপায় + স্ট্রাবাল বা সংখ্যা (স্ট্রভাল) ব্যবহার করা

উদাহরণ:

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


2

=> রূপান্তরকারী ('10 .00 ') সহ ফাংশনটি কল করুন

parseFloat (স্ট্রিং) => এটি ফ্লোটে রূপান্তর করতে, ফিক্সড (4) => কত দশমিক

parseInt (str) => এটি পূর্ণসংখ্যায় রূপান্তর করতে ব্যবহার করা যেতে পারে

convertstring(string){
    let number_parsed: any = parseFloat(string).toFixed(4)
    return number_parsed
}

2

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

অনলাইন নম্বর রূপান্তর সরঞ্জাম

সংখ্যা রূপান্তরকারী



0

আয়নিক প্রোগ্রামিং পরিস্থিতিগুলিতে আপনারা অনেককে ডেটা ধরণের রূপান্তর করতে সমস্যা হচ্ছেন, কারণ এটি খুব নতুন ভাষা, এখানে আমি ব্যবহারকারীর জন্য কীভাবে ডেটা আয়নিক ধরণের স্ট্রিং ডেটাতে রূপান্তর করতে হয় তার জন্য বিশদ নির্দেশাবলীর বর্ণনা করব পূর্ণসংখ্যা টাইপ করুন।

প্রোগ্রামিং ভাষায় যেমন জাভা, পিএইচপি, সি, সি ++, ... সবগুলিতে সহজেই ডেটা স্থানান্তরিত করা যায়, তবে আয়নিক আমাদের জন্যও তৈরি করতে পারে ডেটা রূপান্তরও অন্যান্য প্রোগ্রামিং ভাষায় নয় সহজ উপায় least

this.mPosition = parseInt("");

0

যদি আপনি কেবল প্রকারের বিষয়ে কথা বলছেন, যেমন অন্য লোকেরা বলেছিল, পার্সেন্ট () ইত্যাদি সঠিক প্রকারটি ফিরিয়ে দেবে। এছাড়াও, যদি কোনও কারণে মানটি একটি সংখ্যা বা একটি স্ট্রিং উভয়ই হতে পারে এবং আপনি পার্সিয়ান্ট () কল করতে চান না, তবে টাইপফুলের ভাবগুলিও সঠিক ধরণের হয়ে যাবে:

function f(value:number|string){
  if(typeof value==='number'){
   // value : number
  }else {
   // value : string
  }
}

0

এখানে StrToNumber ফাংশনের পরিবর্তিত সংস্করণ। পূর্বের মত,

  1. এটি একটি বৈকল্পিক চিহ্নকে সংখ্যার মানের সামনে বা পিছনে প্রদর্শিত হতে দেয়।
  2. এটি স্ট্রিংয়ের মাথা বা লেজে কেবল একটি চিহ্ন রয়েছে তা যাচাই করতে একটি পরীক্ষা করে।
  3. যদি কোনও ত্রুটি দেখা দেয় তবে একটি "পাস করা" ডিফল্ট মান ফিরে আসে।

এই প্রতিক্রিয়াটি একটি সম্ভাব্য সমাধান যা আমার আগের পোস্টের তুলনায় প্রাথমিক প্রশ্নের সাথে আরও উপযুক্ত।

   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);    
   }


0

টাইপস্ক্রিপ্ট আমাদের 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);
}

-1

আপনি সর্বদা castালাই বিকল্পটি ব্যবহার করতে পারেন। প্রথমত, আপনাকে অবশ্যই নিজের অবজেক্টটি "অজানা" টাইপে রূপান্তর করতে হবে এবং তারপরে এটি একটি প্রত্যাশিত অবজেক্ট টাইপের মধ্যে কাস্ট করতে হবে।

let subID:number = 0;

subID = <number><unknown> await obj_s1aSite.submissionTableFirstID.getText();

টাইপসক্রিপ্টটিতে কেবল টাইপ ইঙ্গিত রয়েছে, টাইপ কাস্টিং নেই। এটি সংকলকটিকে এটি একটি সংখ্যা মনে করে চালিত করে, রানটাইম এ এটি এখনও একটি স্ট্রিং থাকবে যদি আপনি এটি পার্স না করেন।
k0pernikus

console.log(typeof <number><unknown>"1", typeof Number("1"))মুদ্রণ করবে string number
k0pernikus
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.