javascript - w3schools - জাভাস্ক্রিপ্ট 0 NaN রূপান্তর করুন




javascript কি (6)

যদি না বিবৃতি ছাড়াই NaN মানগুলি 0 তে রূপান্তর করার একটি উপায় থাকে:

if (isNaN(a)) a = 0;

এটা প্রত্যেক সময় আমার ভেরিয়েবল চেক খুব বিরক্তিকর।

https://code.i-harness.com


এই সহজ ফাংশন চেষ্টা করুন

var NanValue = function (entry) {
    if(entry=="NaN") {
        return 0.00;
    } else {
        return entry;
    }
}

একটি ডবল-টিল্ড ব্যবহার করে (দ্বিগুণ বিন্দু নয়) - ~~ - জাভাস্ক্রিপ্টে কিছু আকর্ষণীয় জিনিস আছে। উদাহরণস্বরূপ আপনি Math.floor পরিবর্তে এটি ব্যবহার করতে পারেন অথবা Math.floor বিকল্প হিসাবেও parseInt("123", 10) ব্যবহার করতে পারেন! এটি ওয়েবে অনেক বিষয়ে আলোচনা করা হয়েছে, তাই এটি এখানে কাজ করে না কেন, তবে যদি আপনি আগ্রহী হন তবে জাভাস্ক্রিপ্টে "ডাবল টিলেড" (~~) অপারেটর কী?

আমরা NaN রূপান্তর করতে একটি ডবল-টিল্ডির এই সম্পত্তিটি কাজে লাগাতে পারি এবং আনন্দের সাথে সেই সংখ্যা শূন্য!

console.log(~~NaN); // 0


কিভাবে একটি regex সম্পর্কে?

function getNum(str) {
  return /[-+]?[0-9]*\.?[0-9]+/.test(str)?parseFloat(str):0;
}

নিচের কোডটি সঠিকভাবে প্রবেশ করা সংখ্যাগুলির গণনা করার জন্য NaN কে উপেক্ষা করবে

function getNum(str) {
  return /[-+]?[0-9]*\.?[0-9]+/.test(str)?parseFloat(str):0;
}
var inputsArray = document.getElementsByTagName('input');

function computeTotal() {
  var tot = 0;
  tot += getNum(inputsArray[0].value);
  tot += getNum(inputsArray[1].value);
  tot += getNum(inputsArray[2].value);
  inputsArray[3].value = tot;
}
<input type="text"></input>
<input type="text"></input>
<input type="text"></input>
<input type="text" disabled></input>
<button type="button" onclick="computeTotal()">Calculate</button>


তুমি এটি করতে পারো:

a = a || 0

... যা কোন "মিথ্যা" মান থেকে 0 রূপান্তর করবে।

"মিথ্যা" মানগুলি হল:

  • false
  • null
  • undefined
  • 0
  • "" (খালি স্ট্রিং)
  • NaN (একটি সংখ্যা নয়)

অথবা যদি আপনি পছন্দ করেন:

a = a ? a : 0;

... উপরে যা একই প্রভাব থাকবে।

যদি উদ্দেশ্য কেবল নাএনএর চেয়ে বেশি পরীক্ষার জন্য হয়, তবে আপনি একই কাজ করতে পারেন তবে প্রথমে একটি সংখ্যায় রূপান্তর করুন।

a = +a || 0

এটি একটি সংখ্যা রূপান্তর করার চেষ্টা করার জন্য unary + অপারেটর ব্যবহার করে। সংখ্যাসূচক স্ট্রিংগুলি '123' মতো সংখ্যায় রূপান্তরিত করার জন্য এটির আরও যোগফল রয়েছে।

কেউ যদি অ্যারে পাস করে তবে এটি সফলভাবে সংখ্যার রূপে রূপান্তরিত হতে পারে এমন একমাত্র অপ্রত্যাশিত জিনিস হতে পারে:

+['123']  // 123

এখানে আমরা একটি অ্যারে আছে যে একটি একক সদস্য আছে একটি সাংখ্যিক স্ট্রিং। এটি সফলভাবে একটি সংখ্যা রূপান্তরিত করা হবে।


বরং এটি চালিয়ে যাওয়ার পরিবর্তে আপনি চালিয়ে যেতে পারেন, কেন পশ্চাদ্ধাবন করবেন না এবং কেন আপনি প্রথম স্থানে একটি নাএনএতে চলছেন?

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

কিছু উপ-সাব-সাব-অপারেশন (যে নিম্ন স্তরে NaN তৈরি করে) কিছু ভুল পথে চলে গেলে NaN কাজটি কার্যকর হয়, চূড়ান্ত ফলাফলও NaN হতে পারে, যা আপনি অবিলম্বে ত্রুটি হিসাবে চিনতে পারবেন ত্রুটি হ্যান্ডলিং যুক্তি (নিক্ষেপ / ধরা সম্ভবত?) এখনো সম্পন্ন হয় না।

গাণিতিক হিসাবের ফলাফল হিসাবে NaN সর্বদা নির্দেশ করে যে কিছু গাণিতিক বিশদ বিব্রত হয়েছে। কম্পিউটারটি "এখানে ডিবাগিংয়ের প্রয়োজন" বলতে এটি একটি উপায়। যে কোনও সংখ্যার সাথে যে কোনও সংখ্যার সাথে চলতে কিছু উপায় খোঁজার পরিবর্তে (0 প্রকৃতপক্ষে আপনি কী চান?), কেন সমস্যাটি খুঁজে পান এবং এটি ঠিক করবেন না।

জাভাস্ক্রিপ্টে একটি সাধারণ সমস্যা হল যে উভয় parseFloat(...) parseInt(...) এবং parseFloat(...) যুক্তি ( null , '' , ইত্যাদি) দেওয়া হলে parseFloat(...) করবে। একটি উচ্চতর স্তরের চেয়ে কম সর্বনিম্ন পর্যায়ে সমস্যাটি সমাধান করুন। তারপরে সামগ্রিক গণনার ফলাফলের ধারণা তৈরি করার একটি ভাল সুযোগ রয়েছে এবং আপনি সম্পূর্ণ হিসাবের ফলাফলের জন্য কিছু যাদু নম্বর (0 বা 1 বা যাই হোক না কেন) প্রতিস্থাপন করছেন না। (এর পার্সেন্ট (parseInt (foo.value) || 0) শুধুমাত্র অর্থের জন্য কাজ করে, পণ্য নয় - পণ্যগুলির জন্য আপনি ডিফল্ট মানটি 0 এর পরিবর্তে 1 হতে চান, তবে নির্দিষ্ট মানটি প্রকৃতপক্ষে 0. নয়)

সম্ভবত কোডিংয়ের সহজতার জন্য আপনি একটি ফাংশন ব্যবহারকারীর কাছ থেকে একটি মান পুনরুদ্ধার করতে চান, এটি পরিষ্কার করুন এবং প্রয়োজনে ডিফল্ট মান প্রদান করুন, যেমন:

function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}

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

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

     <script src="/common/tools/jquery-1.10.2.js"></script>
     <script src="/common/tools/jquery-ui.js"></script>

     <!----------------- link above 2 lines to your jquery files ------>





    <script type="text/javascript" >
    function calculate_subtotal(){

    $('#quantity').val((+$('#quantity').val() || 0));
    $('#unit').val((+$('#unit').val() || 0));

    var  calculated = $('#quantity').val() * $('#unit').val() ;
    $('#subtotal').val(calculated);


    }
    </script>


      <input type = "text" onChange ="calculate_subtotal();" id = "quantity"/>
      <input type = "text" onChange ="calculate_subtotal();" id = "unit"/>
      <input type = "text" id = "subtotal"/>





javascript