সংখ্যার মতো দুটি স্ট্রিং কীভাবে যুক্ত করবেন?


176

আমার দুটি স্ট্রিং রয়েছে যার মধ্যে কেবল সংখ্যা রয়েছে:

var num1 = '20',
    num2 = '30.5';

আমি আশা করতাম যে আমি তাদের একসাথে যুক্ত করতে পারব, তবে তারা পরিবর্তে সম্মিলিত হচ্ছে:

num1 + num2; // = '2030.5'

আমি কীভাবে এই স্ট্রিংগুলিকে সংখ্যা হিসাবে গণ্য করতে পারি?

উত্তর:


378

আমি প্রথমে তাদের সংখ্যায় রূপান্তর করতে ইউনারি প্লাস অপারেটরটি ব্যবহার করব।

+num1 + +num2;

9
খুব ঠান্ডা. এটি ভাগ করে নেওয়ার জন্য ধন্যবাদ। আমি এই নিবন্ধটি পেয়েছি যা ইউনারি প্লাস অপারেটরের বর্ণনা করে এবং কিছু দরকারী এটি বিভিন্ন ডেটা ধরণের উপর প্রভাব ফেলে। xkr.us/articles/ javascript
unary-

4
তবে যদি এই সংখ্যাগুলি 2 ^ 53 এর চেয়ে বড় হয় তবে আপনাকে স্ট্রিংগুলির কিছু অংশ যুক্ত করতে একটি ফাংশন তৈরি করতে হবে এবং প্রতিটি অংশে একটি লুপে বহন করবে। : D
trusktr

2
এটি আমাকে একটি ত্রুটি দিয়েছে, সুতরাং আমি পরিবর্তে পার্সফ্লোট () ব্যবহার করেছি।
হককি

1
: @NicholasCarey উত্তর নিচে আরও দেখুন stackoverflow.com/a/8976770/1579667
Benj

এটি করার কোনও কম উপায় আছে? (অস্বীকৃতি: আমি সর্বদা এটি করে চলেছি))
সবিস্কুট

20

ParseInt জন্য MDN ডক্স
parseFloat জন্য MDN ডক্স

ParseInt র্যাডিক্স সালে, যাতে আমরা বেস 10. nonstrict ইন হয় একটি সংখ্যা সঙ্গে prepended জাভাস্ক্রিপ্ট দশ হিসাবে নির্দিষ্ট করা 0অকট্যাল হিসাবে গণ্য হবে। এটি অবশ্যই সমস্যার কারণ হবে!

parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)

অ্যানারি অপারেটর ব্যবহার করে দরকারী শর্টকাটের জন্য কওসপ্যান্ডিয়নের উত্তরও দেখুন । আমি বিভিন্ন আচরণ দেখানোর জন্য একটি ফিডল সেট আপ করেছি।

http://jsfiddle.net/EtX6G/

var ten = '10';
var zero_ten = '010';
var one = '1';
var body = document.getElementsByTagName('body')[0];

Append(parseInt(ten) + parseInt(one));
Append(parseInt(zero_ten) + parseInt(one));
Append(+ten + +one);
Append(+zero_ten + +one);

function Append(text) {
    body.appendChild(document.createTextNode(text));
    body.appendChild(document.createElement('br'));
}

2
দশমিক পেয়ে গেলে পার্সফ্লোট () ব্যবহার করুন। :)
ডায়োডিয়াস - জেমস ম্যাকফার্লান

1
এছাড়াও আপনার সত্যিকারের 10 হিসাবে রেডিক্স নির্দিষ্ট করা উচিত
কেওসপ্যান্ডিয়ন

এবং +num1 + +num2আরও খাটো, তাত্ক্ষণিকভাবে আরও মার্জিত। মূলত +Number
আনরি

আপনি যখন পার্স ইন্ট করবেন তখন আপনি .5 দশমিকটি হারাবেন না?
ডেকে

এটি মূল্যবান কিসের জন্য, পার্সেন্ট এবং পার্সফ্লোট পরীক্ষামূলক এবং ব্রাউজারগুলিতে ব্যাপকভাবে সমর্থিত নয় - মোবাইলে প্রায় কোনও সমর্থন নেই।
হবে

14

কোডটি আরও নীচের মতো পাঠযোগ্য করার জন্য প্রথম বন্ধনীতে, বন্ধনীর অভ্যন্তরে সংখ্যা হিসাবে গণ্য করার জন্য, অ্যানারি প্লাস অপারেটরটি ব্যবহার করার পরামর্শ দেব:

(+varname)

সুতরাং, আপনার ক্ষেত্রে এটি:

var num1 = '20',
    num2 = '30.5';

var sum = (+num1) + (+num2);

// Just to test it
console.log( sum ); // 50.5



6

আপনার যদি দুটি স্ট্রিং একসাথে খুব সংখ্যক সংখ্যক যুক্ত করতে হয় তবে আপনার প্রতিটি স্ট্রিং পজিশনে সংযোজনটি মূল্যায়ন করতে হবে:

function addStrings(str1, str2){
  str1a = str1.split('').reverse();
  str2a = str2.split('').reverse();
  let output = '';
  let longer = Math.max(str1.length, str2.length);
  let carry = false;
  for (let i = 0; i < longer; i++) {
    let result
    if (str1a[i] && str2a[i]) {
      result = parseInt(str1a[i]) + parseInt(str2a[i]);

    } else if (str1a[i] && !str2a[i]) {
      result = parseInt(str1a[i]);

    } else if (!str1a[i] && str2a[i]) {
      result = parseInt(str2a[i]);
    }

    if (carry) {
        result += 1;
        carry = false;
    }
    if(result >= 10) {
      carry = true;
      output += result.toString()[1];
    }else {
      output += result.toString();
    }
  }
  output = output.split('').reverse().join('');

  if(carry) {
    output = '1' + output;
  }
  return output;
}


4

চেষ্টা

var x = parseFloat(num1) + parseFloat(num2) ;

বা, আপনার প্রয়োজনের উপর নির্ভর করে:

var x = parseInt(num1) + parseInt(num2) ;

http://www.javascripter.net/faq/convert2.htm

আপনি ডাবলাস ক্রকফোর্ডের জাভাস্ক্রিপ্ট: দ্য গুড পার্টস বইটি তুলতে চাইতে পারেন । জাভাস্ক্রিপ্টের গ্যাটাচসের পরিবর্তে আকারের সংগ্রহযোগ্য রয়েছে! এই বইটি তাদের স্পষ্ট করার দিকে অনেক এগিয়ে গেছে। আরো দেখুন

এবং মিঃ ক্রকফোর্ডের দুর্দান্ত প্রবন্ধ, জাভাস্ক্রিপ্ট: দ্য ওয়ার্ল্ডের সর্বাধিক ভুল বোঝাবুঝি প্রোগ্রামিং ল্যাঙ্গুয়েজ


3

আমি সবসময় কেবল শূন্যকে বিয়োগ করেছি।

num1-0 + num2-0;

অনুমোদিত যে ইউনিারি অপারেটর পদ্ধতিটি একটি কম চরিত্রের, তবে সবাই জানেনা যে অ্যানারি অপারেটর কী বা কীভাবে গুগল করবেন তা যখন তারা জানেন না তখন কী বলা হয় তা কী তা বলা হয়।


2

যদি আপনি সংখ্যার সাথে স্ট্রিং হিসাবে ক্রিয়াকলাপ করতে চান (যেমন সংখ্যা যেখানে bits৪ বিট অপেক্ষা বড় থাকে তবে) আপনি বড়-পূর্ণসংখ্যক লাইব্রেরি ব্যবহার করতে পারেন ।

const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"

2

এখানে আপনার কাছে দুটি বিকল্প রয়েছে: -

1. স্ট্রিং সংখ্যাটিকে পূর্ণসংখ্যায় রূপান্তর করতে আপনি অ্যানারি প্লাস ব্যবহার করতে পারেন।

২. আপনি সংখ্যাকে সংশ্লিষ্ট ধরণের পার্সিংয়ের মাধ্যমেও এটি অর্জন করতে পারেন। যেমন পার্সেন্ট (), পার্সফ্লোট () ইত্যাদি

এখন আমি উদাহরণগুলির সাহায্যে আপনাকে এখানে দেখানোর জন্য যাচ্ছি (দুটি সংখ্যার যোগফলটি সন্ধান করুন)।

আনরি প্লাস অপারেটর ব্যবহার করা

<!DOCTYPE html>
<html>
<body>

<H1>Program for sum of two numbers.</H1>
<p id="myId"></p>
<script>
var x = prompt("Please enter the first number.");//prompt will always return string value
var y = prompt("Please enter the second nubmer.");
var z = +x + +y;    
document.getElementById("myId").innerHTML ="Sum of "+x+" and "+y+" is "+z;
</script>
</body>
</html>

পার্সিং পদ্ধতির ব্যবহার-

<!DOCTYPE html>
<html>
<body>

<H1>Program for sum of two numbers.</H1>
<p id="myId"></p>
<script>
var x = prompt("Please enter the first number.");
var y = prompt("Please enter the second number.");   
var z = parseInt(x) + parseInt(y);
document.getElementById("myId").innerHTML ="Sum of "+x+" and "+y+" is "+z;
</script>
</body>
</html>

2
function sum(){
    var x,y,z;
    x = Number(document.getElementById("input1").value);
    y = Number(document.getElementById("input2").value);
    z = x + y;
    document.getElementById("result").innerHTML = z ;
}

1

আপনি parseIntকোনও সংখ্যায় একটি স্ট্রিং পার্স করতে ব্যবহার করতে পারেন । জিনিসগুলির নিরাপদ দিকে থাকতে, 10বেস 10 তে পার্স করার জন্য সর্বদা দ্বিতীয় যুক্তি হিসাবে পাস করুন ।

num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);

1

জাভা স্ক্রিপ্ট বগি হওয়ায় আপনি আপনার চূড়ান্ত উত্তরটি ভাসমানগুলির জন্য 16 দশমিক কমেরও কম জায়গায় সরিয়ে নেবেন তা নিশ্চিত করুন।

উদাহরণস্বরূপ 5 - 7.6 = -2.5999999999999996


1
জাভাস্ক্রিপ্টটি বগি নয়, এটি অন্য সকল কিছুর মতো একই আইইইই 7575৫ টি ভাসমান পয়েন্ট ব্যবহার করে। আপনার উল্লেখযোগ্য ছদ্মবেশটি হ'ল সংখ্যায় বাইনারি ফ্লোটিং পয়েন্ট গাণিতিক ব্যবহারের প্রাকৃতিক পরিণতি যা আপনি নির্দিষ্ট করে এবং দশমিক দশকে প্রদর্শন করেন।
মাইকেল গ্যারি

1

@ cr05s19xx একটি সদৃশ প্রশ্নে পরামর্শ দিয়েছে:

জাভা স্ক্রিপ্টটি কিছু মজার বিষয় যখন এটি সংখ্যা এবং সংযোজন আসে।

নিম্নলিখিত দেওয়া

'20' - '30' = 10; // '20 '+' 30 '=' 2030 'হিসাবে 10 প্রদান করে; // এগুলি একটি স্ট্রিং হিসাবে ফিরিয়ে দেয় ডকুমেন্ট.জেট এলিমেন্টবাইআইডি থেকে প্রাপ্ত মানগুলি স্ট্রিং, সুতরাং সংযোজন বা বিয়োগফলের সাথে এগিয়ে যাওয়ার আগে তাদের সমস্ত (এমনকি যেটি কাজ করে) সংখ্যায় পার্স করা ভাল। আপনার কোড হতে পারে:

function myFunction() {
  var per = parseInt(document.getElementById('input1').value);
  var num = parseInt(document.getElementById('input2').value);
  var sum = (num / 100) * per;
  var output = num - sum;

  console.log(output);

  document.getElementById('demo').innerHTML = output;
}

function myFunction2() {
  var per = parseInt(document.getElementById('input3').value);
  var num = parseInt(document.getElementById('input4').value);
  var sum = (num / 100) * per;
  var output = sum + num;

  console.log(output);

  document.getElementById('demo1').innerHTML = output;
}

0

parseFloatভাসমান পয়েন্ট সংখ্যাগুলিতে স্ট্রিংকে পার্স করতে পদ্ধতিটি ব্যবহার করুন :

parseFloat(num1) + parseFloat(num2)

0

আমি এটি আমার প্রকল্পে ব্যবহার করি string আমি স্ট্রিংটিকে একটি সংখ্যা হিসাবে বিবেচনা করতে + চিহ্ন ব্যবহার করি (_আপনি পরিবর্তনশীল সহ)

<script>
function computeLoan(){
var amount = document.getElementById('amount').value;
var interest_rate = document.getElementById('interest_rate').value;
var days = document.getElementById('days').value;
var interest = (amount * (interest_rate * .01)) / days;
var payment = ((amount / days) + interest).toFixed(2);
var with_interest = (amount * (interest_rate * .01));
var with_interesst = (+amount * (interest_rate * .01)) + (+amount);
payment = payment.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
document.getElementById('payment').innerHTML = "Target Daily = PHP"+payment;
document.getElementById('with_interesst').innerHTML = "Amount w/Interest =   PHP"+with_interesst;
}
</script>

<div name="printchatbox" id="printchatbox">
 <form id="Calculate" class="form-horizontal">
   <h2>You Can Use This Calculator Before Submit </h2>
   <p>Loan Amount: PHP<input id="amount" type="number" min="1" max="1000000"  onchange="computeLoan()"></p>
   <p>Interest Rate: <input id="interest_rate" type="number" min="0" max="100" value="10" step=".1" onchange="computeLoan()">%</p>
    <p>Term<select id="days" type="number" min="1" max="72" step=".1" onchange="computeLoan()">
    <option value="40">40 Days</option>
    <option value="50">50 Days</option>
    <option value="60">60 Days</option>
    <option value="70">70 Days</option>
    <option value="80">80 Days</option>
    <option value="90">90 Days</option>
    <option value="100">100 Days</option>
    <option value="120">120 Days</option>
    </select>
    </p>                        
   <h2 id="payment"></h2>
   <h2 id ="with_interesst"></h2>
 </form>
</div>

আশা করি এটা সাহায্য করবে


0
document.getElementById(currentInputChoosen).value -= +-100;

আমার ক্ষেত্রে কাজ করে, আপনি যদি আমার মতো একই সমস্যার মধ্যে চলে যান এবং সেই মামলার কোনও সমাধান খুঁজে না পেয়ে এই এসও প্রশ্নটি খুঁজে পান।

কিছুটা অফ-টপিকের জন্য দুঃখিত, তবে আমি কেবল এটি খুঁজে পেয়েছি যে এটি কাজ করে, আমি ভেবেছিলাম এটি ভাগ করে নেওয়া ভাল।

জানি না এটি কোনও নোংরা কাজ, বা আসলে বৈধতা।


-1

আপনি এটির মতো ব্যবহার করতে পারেন:

var num1 = '20',
    num2 = '30.5';

alert((num1*1) + (num2*1)); //result 50.5

* 1 নাম্বারে প্রয়োগ করার সময় স্ট্রিংকে একটি সংখ্যা রূপান্তর করুন।

যদি num1 এ একটি চিঠি বা কমা থাকে, NaN 1 দ্বারা গুণ করে দেয়

যদি num1 নাল হয়, num1 0 প্রদান করে

আন্তরিক শুভেচ্ছা!!!


-2

আপনি যদি সহজ জাভাস্ক্রিপ্ট কোডটি সন্ধান করছেন এবং দুটি ইনপুট বাক্স ব্যবহার করতে চান এবং দুটি মান থেকে সংখ্যা যুক্ত করতে চান তবে এটি চেষ্টা করুন। এখানে কোড।

    Enter the first number: <input type="text" id="num1" /><br />
    Enter the seccond number: <input type="text" id="num2" /><br />
    <input type="button" onclick="call()" value="Add"/>

    <script type="text/javascript">
    function call(){
    var q=parseInt(document.getElementById("num1").value);
    var w=parseInt(document.getElementById("num2").value);
    var result=q+w;
    }
    </script>

আরও তথ্যের জন্য দয়া করে http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.