দুটি সংখ্যার যোগ করা যোগফলকে গণনা করার পরিবর্তে তাদের সাথে মিলিত করে


184

আমি দুটি সংখ্যা যুক্ত করছি, তবে আমি একটি সঠিক মান পাই না।

উদাহরণস্বরূপ, 1 + 212 না 3 প্রদান করে

এই কোডটিতে আমি কী ভুল করছি?

function myFunction() {
  var y = document.getElementById("txt1").value;
  var z = document.getElementById("txt2").value;
  var x = y + z;
  document.getElementById("demo").innerHTML = x;
}
<p>
  Click the button to calculate x.
  <button onclick="myFunction()">Try it</button>
</p>
<p>
  Enter first number:
  <input type="text" id="txt1" name="text1" value="1">
  Enter second number:
  <input type="text" id="txt2" name="text2" value="2">
</p>
<p id="demo"></p>


আপনি ইনপুট হিসাবে কোন ধরণের মান প্রত্যাশা করছেন? পূর্ণসংখ্যা বা দশমিক?
জোড়ায়র

1
একটি পাঠ্য ইনপুট মান স্ট্রিং হতে হবে এবং স্ট্রিং সবসময় পরিবর্তে উপরন্তু কনক্যাটেনেট হবে
হ্যাঁক

1
রূপান্তর সম্পর্কে একটি ভাল লেখার উত্তর এই উত্তরে
akTed


আপনার যদি একটি থাকে তবে আপনি সরাসরি <input type="number">তার .valueAsNumberসম্পত্তি সরাসরি পেতে পারেন ।
ব্যবহারকারী4642212

উত্তর:


341

এগুলি আসলে সংখ্যা নয়, স্ট্রিং। একটি স্ট্রিং থেকে একটি সংখ্যা উত্পাদন করার সবচেয়ে সহজ উপায় হ'ল এটির সাথে এটিকে প্রেন্ডিং করা +:

var x = +y + +z;

4
কৌতূহলের বাইরে (আমি নিজে একটি জাভাস্ক্রিপ্ট প্রোগ্রামার নই) (এবং আমি মনে করি এটি উত্তরটির উন্নতি করবে), +-প্রিফিক্স স্ট্রিংগুলি দিয়ে কী করবে?
সেবাস্তিয়ান মাচ

30
উপরের কোডটি কিছুটা উদ্ভট এবং কম পাকা বিকাশকারীদের বিভ্রান্ত করবে। কোডটি '+' এর বিভ্রান্তিকর ব্যবহারের জন্য জেএসলিন্টকেও ব্যর্থ করবে।
জোড়ায়র

2
@ ফ্রেসনেল: অনাড়ি + অপারেটরগুলি
একট্যাড

10
@ ক্যাকড: আসলে আমি উত্তরগুলির মধ্যে এটি বর্ণনার জন্য কিছুটা বোঝাতে চেয়েছিলাম । অবশ্যই আমি নিজে গুগল অনুসন্ধান করতে অক্ষম; তবে এটি (ইমো) উত্তরের গুণমানকে উন্নত করবে, বিশেষত স্ট্রিং রূপান্তরকরণের জন্য উপসর্গ + + ব্যবহার করা অন্যান্য প্রোগ্রামিং ভাষাগুলিতে খুব অস্বাভাবিক এবং সম্ভবত নবীনীদের বিভ্রান্ত করতে পারে। (তবে, লিঙ্কটি ভাগ করে নেওয়ার জন্য ধন্যবাদ)
সেবাস্তিয়ান মাচ

2
আমি এই শর্টকাটটি ব্যবহার করতে কাউকে নিরুৎসাহিত করব। আমি জানি যে আসলে একটি সংখ্যায় একটি স্ট্রিংকে পার্স করার জন্য আরও কোড প্রয়োজন তবে কমপক্ষে কোডটি স্পষ্টভাবে উদ্দেশ্যটির সাথে মেলে।
সি কেলি


29

parseInt()স্ট্রিংগুলিকে সংখ্যায় ফিরিয়ে আনতে আপনাকে জাভাস্ক্রিপ্টের পদ্ধতিটি ব্যবহার করতে হবে । এই মুহুর্তে তারা স্ট্রিং করছে তাই দুটি স্ট্রিং যুক্ত করে তাদেরকে সম্মতি জানায়, এ কারণেই আপনি "12" পাচ্ছেন।


1
আমি নিশ্চিত নই parseInt()যে ওপির ফাংশনটি দুটি "পূর্ণসংখ্যা" নয়, দুটি ব্যবহারকারী-প্রবেশ করা "নম্বর" যুক্ত করছে।
nnnnnn

2
@nnnnnn আমি মনে করি, parseFloatওপি আরও ইনপুট সরবরাহ করতে পারলে সহজেই এটিকে সংশোধন করা যেতে পারে ।
যোশি

1
@ যোশি - হ্যাঁ, হ্যাঁ এটি হতে পারে তবে উত্তরটি আসলে কোথাও বলে না যা parseInt()কেবলমাত্র পূর্ণসংখ্যার প্রত্যাবর্তন করে, এবং এর কোনও parseInt()"quirks" ব্যাখ্যা করে না - যা ব্যবহারকারীর দ্বারা প্রবেশ করা ডেটাতে সমস্যা হতে পারে - I ভেবেছিলাম এটি উল্লেখযোগ্য। (আমি আসলে কিছুটা কম বা কিছু করি নি didn't)
nnnnnn

হ্যাঁ, আমি একটি অনুমান করেছিলাম যে ইনপুটটি পূর্ণসংখ্যা হবে যেহেতু তারা 1 + 2 এর উদাহরণ দিয়েছে তবে আপনি ঠিক বলেছেন - পার্সফ্লোয়েট () কেবল কোনও 'সংখ্যা' হলে আরও ভাল হতে পারে।
মিটিম

22

পার্সিয়ান্ট (...) ব্যবহার করুন তবে নিশ্চিত হয়ে নিন যে আপনি একটি রেডিক্স মান নির্দিষ্ট করেছেন; অন্যথায় আপনি কয়েকটি বাগে দৌড়বেন (যদি স্ট্রিং "0" দিয়ে শুরু হয় তবে মূলটি অষ্টাল / 8 ইত্যাদি)।

var x = parseInt(stringValueX, 10);
var y = parseInt(stringValueY, 10);

alert(x + y);

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


5
আমি নিশ্চিত নই parseInt()যে ওপির ফাংশনটি দুটি "পূর্ণসংখ্যা" নয়, দুটি ব্যবহারকারী-প্রবেশ করা "নম্বর" যুক্ত করছে given
nnnnnn

1
তিনি যদি ভাসমান পয়েন্টের মান প্রত্যাশা না করেন তবে আমি মনে করি এই পদ্ধতিটি ব্যবহার করা এখনও দুর্দান্ত কাজ করে।
জোড়ায়র

1
এটি এখন ES6 তে কোনও সমস্যা নয়। মূলসূত্রটি নিরাপদে বাদ দেওয়া যেতে পারে। parseInt("012")ভাল কাজ করে, ফিরে 12. অবশ্যই, আপনি এখনও পছন্দসই জিনিস সম্পর্কে যত্নবান হতে হবে [1,2].map(parseInt)

6

পাঠ্যটিতে ইনপুট নেওয়া হওয়ায় কেবল একটি সাধারণ ধরণের কাস্টিং পদ্ধতি যুক্ত করুন। নিম্নলিখিত ব্যবহার:

    var y = parseInt(document.getElementById("txt1").value);
    var z = parseInt(document.getElementById("txt2").value);
    var x = y + z;

6

নিম্নলিখিত সাধারণ পদে কার্যকর হতে পারে।

  • প্রথমত, এইচটিএমএল ফর্ম ক্ষেত্রগুলি পাঠ্যের মধ্যে সীমাবদ্ধ । এটি বিশেষত পাঠ্য বাক্সগুলিতে প্রযোজ্য, এমনকি মানটি একটি সংখ্যার মতো দেখাচ্ছে কিনা তা নিশ্চিত করার জন্য আপনি ব্যথা নিয়েছেন ।

  • দ্বিতীয়ত, জাভাস্ক্রিপ্ট আরও ভাল বা খারাপ হিসাবে +অপারেটরটিকে দুটি অর্থ দিয়ে ওভারলোড করেছে : এটি সংখ্যা যুক্ত করে, এবং এটি স্ট্রিংগুলি সংযুক্ত করে aten এটি সংক্ষিপ্তকরণের জন্য অগ্রাধিকার রয়েছে, সুতরাং এমনকি এর মতো একটি অভিব্যক্তিকেও 3+'4'কনক্যাটেনশন হিসাবে বিবেচনা করা হবে।

  • তৃতীয়ত, জাভাস্ক্রিপ্ট প্রকারভেদে প্রকার পরিবর্তন করতে চেষ্টা করবে যদি এটি পারে, এবং যদি এটির প্রয়োজন হয়। উদাহরণস্বরূপ '2'*'3'উভয় প্রকারের সংখ্যায় পরিবর্তন হবে, যেহেতু আপনি স্ট্রিংগুলি গুণ করতে পারবেন না। এর মধ্যে যদি কোনওটি বেমানান হয় তবে আপনি NaNএকটি নম্বর পাবেন না।

আপনার সমস্যা দেখা দেয় কারণ ফর্মটি থেকে আগত ডেটাগুলি একটি স্ট্রিং হিসাবে বিবেচিত হয় এবং +তাই সংযোজনের পরিবর্তে ইচ্ছামত সম্মিলিত হবে।

কোনও ফর্ম থেকে অনুমিত সংখ্যাসূচক তথ্য পড়ার সময়, আপনি একটি পূর্ণসংখ্যা বা দশমিক চান কিনা তার উপর নির্ভর করে আপনার সর্বদা এটির মাধ্যমে parseInt()বা এটির মাধ্যমে চাপ দেওয়া উচিত parseFloat()

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

বৈধ সংখ্যার পরে যে কোনও কিছুই কেবল উপেক্ষা করা হয়। তারা ব্যর্থ হয় যদি সংখ্যাটি হিসাবে স্ট্রিংটি শুরু না হয়। তাহলে আপনি পাবেন NaN

ফর্মগুলি থেকে সংখ্যার জন্য একটি সাধারণ সাধারণ উদ্দেশ্য কৌশলটি হ'ল এইরকম:

var data=parseInt(form.elements['data'].value); //  or parseFloat

আপনি যদি 0 টিতে একটি অবৈধ স্ট্রিং জড়ো করার জন্য প্রস্তুত থাকেন তবে আপনি এটি ব্যবহার করতে পারেন:

var data=parseInt(form.elements['data'].value) || 0;


4

এটি সংখ্যা যোগ করবে না; পরিবর্তে এটি এটি একত্রিত করবে:

var x = y + z;

আপনার করা দরকার:

var x = (y)+(z);

সংখ্যায় ক্রিয়াকলাপ নির্দিষ্ট করতে আপনাকে অবশ্যই পার্সেন্ট ব্যবহার করতে হবে। উদাহরণ:

var x = parseInt(y) + parseInt(z); [final soulution, as everything us]

এটি গ্রহণযোগ্য উত্তর নয় additionএবং সঠিক উত্তর হওয়া উচিত subtraction
এমআর_এএমডিএভি

3

এই কোড দুটি ভেরিয়েবলের যোগফল! এটি আপনার ফাংশনে রাখুন

var y = parseInt(document.getElementById("txt1").value);
var z = parseInt(document.getElementById("txt2").value);
var x = (y +z);
document.getElementById("demo").innerHTML = x;`

1

সংযোজন পদক্ষেপের সময় আপনি ধরণের রূপান্তরটি মিস করছেন ...
var x = y + z;হওয়া উচিতvar x = parseInt(y) + parseInt(z);

 <!DOCTYPE html>

 <html>
 <body>
  <p>Click the button to calculate x.</p>
  <button onclick="myFunction()">Try it</button>
  <br/>
  <br/>Enter first number:
  <input type="text" id="txt1" name="text1">Enter second number:
  <input type="text" id="txt2" name="text2">
  <p id="demo"></p>
 <script>
    function myFunction() 
    {
      var y = document.getElementById("txt1").value;
      var z = document.getElementById("txt2").value;
      var x = parseInt(y) + parseInt(z);
      document.getElementById("demo").innerHTML = x;
    }
 </script>
 </body>
 </html>

1
  <input type="text" name="num1" id="num1" onkeyup="sum()">
  <input type="text" name="num2" id="num2" onkeyup="sum()">
  <input type="text" name="num2" id="result">

  <script>
     function sum()
     {

        var number1 = document.getElementById('num1').value;
        var number2 = document.getElementById('num2').value;

        if (number1 == '') {
           number1 = 0
           var num3 = parseInt(number1) + parseInt(number2);
           document.getElementById('result').value = num3;
        }
        else if(number2 == '')
        {
           number2 = 0;
           var num3 = parseInt(number1) + parseInt(number2);
           document.getElementById('result').value = num3;
        }
        else
        {
           var num3 = parseInt(number1) + parseInt(number2);
           document.getElementById('result').value = num3;
        }

     }
  </script>

3
এই উত্তরটি কীভাবে বর্তমান সমস্যা সমাধানে
ওপিকে

1

এটা খুবই সাধারণ:

<html>

    <body>
        <p>Click the button to calculate x.</p>
        <button onclick="myFunction()">Try it</button>
        <br/>
        <br/>Enter first number:
        <input type="text" id="txt1" name="text1">Enter second number:
        <input type="text" id="txt2" name="text2">
        <p id="demo"></p>

        <script>
            function myFunction() {
                var y = document.getElementById("txt1").value;
                var z = document.getElementById("txt2").value;
                var x = +y + +z;
                document.getElementById("demo").innerHTML = x;
            }
        </script>
    </body>
</html>

1

এটা চেষ্টা কর:

<!DOCTYPE html>
<html>

    <body>
        <p>Add Section</p>

        <label>First Number:</label>
        <input id="txt1"  type="text"/><br />
        <label>Second Number:</label>
        <input id="txt2"  type="text"/><br />

        <input type="button" name="Add" value="Add" onclick="addTwoNumber()"/>
        <p id="demo"></p>

        <script>
            function myFunction() {
                document.getElementById("demo").innerHTML = Date();
            }

            function addTwoNumber(){
                var a = document.getElementById("txt1").value;
                var b = document.getElementById("txt2").value;

                var x = Number(a) + Number(b);
                document.getElementById("demo").innerHTML = "Add Value: " + x;
            }
        </script>
    </body>
</html>

1
    <head>
        <script type="text/javascript">
            function addition()
            {
                var a = parseInt(form.input1.value);
                var b = parseInt(form.input2.value);
                var c = a+b
                document.write(c);
            }
        </script>
    </head>

    <body>
        <form name="form" method="GET">
        <input type="text" name="input1" value=20><br>
        <input type="text" name="input2" value=10><br>
        <input type="button" value="ADD" onclick="addition()">
        </form>
    </body>
</html>

3
তাই আপনাকে স্বাগতম! আপনি কি আরও একটু ব্যাখ্যা করতে পারেন? আপনার উত্তরটি কেবল কোড, সুতরাং এটি কার্যকর হতে পারে তবে প্রশ্নকারী (বা অন্যান্য দর্শক!) কেন এটি কাজ করে তা বুঝতে পারে না।
চিলিয়ন

1

আমাদের যদি দুটি ইনপুট ক্ষেত্র থাকে তবে ইনপুট ক্ষেত্রগুলি থেকে মানগুলি পান এবং তারপরে জাভাস্ক্রিপ্ট ব্যবহার করে এগুলি যুক্ত করুন।

$('input[name="yourname"]').keyup(function(event) {
    /* Act on the event */
    var value1 = $(this).val();
    var value2 = $('input[name="secondName"]').val();
    var roundofa = +value2+ +value1;

    $('input[name="total"]').val(addition);
});

0

আপনি নিয়মিত এক্সপ্রেশন হুইথার সাথে তারা পছন্দ মতো সংখ্যাগুলি নিয়ে একটি পরীক্ষা করতে পারেন

function myFunction() {
    var y = document.getElementById("txt1").value;
    var z = document.getElementById("txt2").value;
    if((x.search(/[^0-9]/g) != -1)&&(y.search(/[^0-9]/g) != -1))
      var x = Number(y)+ Number(z);
    else
      alert("invalid values....");
    document.getElementById("demo").innerHTML = x;
  }

নিয়মিত প্রকাশের পরিবর্তে আপনি কেবল পার্সেক্সএক্সএক্স ব্যবহার করতে পারেন এবং NaN রিটার্ন পরীক্ষা করতে পারবেন।
হ্যাঁক

ব্যবহারকারী-প্রবেশ করা ডেটা বৈধকরণ সর্বদা একটি ভাল পরিকল্পনা, তবে আপনি একটি সংখ্যার যোগ করার আগে আপনাকে ইনপুট স্ট্রিংগুলি সংখ্যাসূচক আকারে রূপান্তর করতে হবে।
nnnnnn

0

parseFloatএটি ব্যবহার করে দশমিক মান সহ স্ট্রিংটিকে সংখ্যায় রূপান্তরিত করা হবে।

 function myFunction() {
      var y = document.getElementById("txt1").value;
      var z = document.getElementById("txt2").value;
      var x = parseFloat(y) + parseFloat(z);
      document.getElementById("demo").innerHTML = x;
    }


<p>
  Click the button to calculate x.
  <button onclick="myFunction()">Try it</button>
</p>
<p>
  Enter first number:
  <input type="text" id="txt1" name="text1" value="1">
  Enter second number:
  <input type="text" id="txt2" name="text2" value="2">
</p>
<p id="demo"></p>

0

আপনি আরও লিখতে পারেন: var z = x - -y; এবং আপনি সঠিক উত্তর পাবেন।

<body>

<input type="text" id="number1" name="">
<input type="text" id="number2" name="">
<button type="button" onclick="myFunction()">Submit</button>

<p id="demo"></p>

    <script>
    function myFunction() {
        var x, y ;

        x = document.getElementById('number1').value;
        y = document.getElementById('number2').value;

        var z = x - -y ;

        document.getElementById('demo').innerHTML = z;
    }
    </script>
</body>

0

এখানে আপনার কোডটি ফাংশনে ভেরিয়েবলগুলি বিশ্লেষণ করে যায়।

<html>
  <body>
    <p>Click the button to calculate x.</p>
    <button onclick="myFunction()">Try it</button>
    <br/>
    <br/>Enter first number:
    <input type="text" id="txt1" name="text1">
    <br>Enter second number:
    <input type="text" id="txt2" name="text2">
    <p id="demo"></p>
    <script>
      function myFunction() {
        var y = parseInt(document.getElementById("txt1").value);
        var z = parseInt(document.getElementById("txt2").value);
        var x = y + z;
        document.getElementById("demo").innerHTML = x;
      }
    </script>
  </body>
</html>

উত্তর

এখানে চিত্র বিবরণ লিখুন


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