আইইইই 75৫৪ ন্যান মানগুলির জন্য মিথ্যা ফিরিয়ে দেওয়া সমস্ত তুলনা করার যুক্তি কী?


267

এনএএন মানগুলির তুলনা কেন অন্যান্য সমস্ত মান থেকে আলাদা আচরণ করে? এটি হ'ল অপারেটরগুলির সাথে সমস্ত তুলনা ==, <=,> =, <,> যেখানে এক বা উভয় মান হল অন্য সমস্ত মানগুলির আচরণের বিপরীতে মিথ্যা প্রত্যাবর্তন করে।

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

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

সম্পাদনা করুন: এখনও পর্যন্ত সমস্ত উত্তর যুক্তি দিয়েছিল যে এটি NaN এর তুলনা করা অর্থহীন।

আমি সম্মত, তবে এর অর্থ এই নয় যে সঠিক উত্তরটি মিথ্যা, বরং এটি একটি নোট-এ-বুলিয়ান (এনএবি) হবে, যা ভাগ্যক্রমে বিদ্যমান নেই।

সুতরাং তুলনা করার জন্য সত্য বা মিথ্যা প্রত্যাবর্তনের পছন্দটি আমার বিবেচনায় স্বেচ্ছাসেবী এবং সাধারণ তথ্য প্রক্রিয়াকরণের জন্য যদি এটি সাধারণ আইনগুলি (== এর প্রতিচ্ছবি, <, ==,> এর ট্রাইকোটমি) মেনে চলা হয় তবে সুবিধাজনক হবে st যা এই আইনগুলির উপর নির্ভর করে বিভ্রান্ত হয়ে পড়ে।

সুতরাং আমি এই আইনগুলি ভঙ্গ করার কিছু দৃ concrete় সুবিধা চাইছি, কেবল দার্শনিক যুক্তি নয়।

সম্পাদনা 2: আমি মনে করি যে আমি এখন বুঝতে পেরেছি কেন কেন এনএএন সর্বাধিক করা একটি খারাপ ধারণা হবে, এটি উচ্চতর সীমাগুলির গণনাকে গোলমাল করবে।

NaN! = কোনও লুপের মধ্যে রূপান্তর সনাক্তকরণ এড়াতে NaN বাঞ্ছনীয় হতে পারে

while (x != oldX) {
    oldX = x;
    x = better_approximation(x);
}

যা তবে কম সীমাবদ্ধতার সাথে নিখুঁত পার্থক্যের তুলনা করে আরও ভাল লেখা উচিত। সুতরাং আইএমএইচএও এটি এনএএন-এ রিফ্লেক্সিভিটি ভাঙার জন্য তুলনামূলকভাবে দুর্বল যুক্তি।


2
একবার কোনও এনএএন গণিতে প্রবেশ করালে এটি সাধারণত কখনই ছাড়বে না, সুতরাং আপনার রূপান্তর পরীক্ষাটি অসীম লুপ হয়ে উঠবে। সম্ভবত কলটি রুটিনে রূপান্তর করতে ব্যর্থতার কথা বলা সাধারণত এনএএনকে ফিরিয়ে দেওয়া ভাল pre সুতরাং, লুপ কাঠামোটি সাধারণত এমন কিছু হয়ে যায় while (fabs(x - oldX) > threshold), যদি কনভার্জেশন ঘটে বা কোনও এনএএন গণনে প্রবেশ করে তবে লুপটি প্রস্থান করে। NaN সনাক্তকরণ এবং উপযুক্ত প্রতিকারটি তখন লুপের বাইরে ঘটে।
স্টিফেন ক্যানন

1
যদি NaN ক্রমটির নূন্যতম উপাদান ছিল যে লুপটি এখনও কাজ করবে।
স্টার ব্লু

উত্তর:


535

আমি আইইইই -754 কমিটির সদস্য ছিলাম, আমি কিছুটা পরিষ্কার করার জন্য সাহায্য করার চেষ্টা করব।

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

  • সংযোজন সাহসী নয়।
  • বিতরণ আইন হোল্ড করে না।
  • বিপরীত ছাড়াই ভাসমান-পয়েন্ট সংখ্যা রয়েছে।

আমি যেতে পারে। একটি নির্দিষ্ট আকারের গাণিতিক ধরণের নির্দিষ্ট করা সম্ভব নয় যা সকলকে সন্তুষ্ট করেআমরা জানি এবং পছন্দ করি এমন আসল পাটিগণিতের সম্পত্তি । 754 টি কমিটি তাদের কয়েকটিকে বাঁকানো বা ভাঙার সিদ্ধান্ত নিতে হবে। এটি বেশ কয়েকটি সহজ সরল নীতি দ্বারা পরিচালিত:

  1. আমরা যখন পারি, আমরা বাস্তব পাটিগণ্যের আচরণের সাথে মেলে।
  2. যখন আমরা না পারি, আমরা লঙ্ঘনগুলি অনুমানযোগ্য এবং যতটা সম্ভব নির্ণয়ের জন্য সহজ করার চেষ্টা করি।

আপনার মন্তব্য সম্পর্কে "এর অর্থ এই নয় যে সঠিক উত্তরটি মিথ্যা", এটি ভুল। শিকারী (y < x)জিজ্ঞাসা করে যে এর yচেয়ে কম কিনা x। যদি yNaN হয়, তবে এটি কোনও ভাসমান-বিন্দু মানের চেয়ে কম নয়x , সুতরাং উত্তরটি অবশ্যই অমূলক।

আমি উল্লেখ করেছি যে ট্রাইকোটমি ভাসমান-পয়েন্টের মানগুলিতে ধারণ করে না। তবে, এখানে একই জাতীয় সম্পত্তি রয়েছে যা হোল্ড করে। ধারা 5.11, 754-2008 স্ট্যান্ডার্ডের অনুচ্ছেদ 2:

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

NaNs পরিচালনা করতে অতিরিক্ত কোড লেখার ক্ষেত্রে আপনার কোডটি এমনভাবে কাঠামো করা সাধারণত সম্ভব (যদিও সর্বদা সহজ নয়) যেভাবে NaN গুলি সঠিকভাবে পড়ে, তবে এটি সবসময় হয় না। যখন এটি না হয়, কিছু অতিরিক্ত কোডের প্রয়োজন হতে পারে, তবে বীজগণিত বন্ধটি ভাসমান-পয়েন্ট পাটিগণিতের কাছে নিয়ে আসা সুবিধার জন্য মূল্য দিতে খুব কম দাম price


সংযোজন: অনেক মন্তব্যকারী যুক্তি দেখিয়েছেন যে NaN অবলম্বন করার কারণে সমতা এবং ট্রাইকোটমির প্রতিচ্ছবি সংরক্ষণ করা আরও কার্যকর হবে! = NaN কোনও পরিচিত অক্ষর সংরক্ষণ করে বলে মনে হয় না। আমি এই দৃষ্টিভঙ্গির প্রতি কিছুটা সহানুভূতি রয়েছে বলে স্বীকার করছি, তাই আমি ভেবেছিলাম এই উত্তরটি আবার ঘুরে দেখব এবং আরও কিছু প্রসঙ্গ সরবরাহ করব।

কাহানের সাথে কথা বলা থেকে আমার বোঝা যায় যে NaN! = NaN দুটি বাস্তববাদী বিবেচনার মধ্য দিয়ে উদ্ভূত:

  • এটি যখনই সম্ভব x == yসমতুল্য হওয়া উচিত x - y == 0(আসল পাটিগণিতের উপপাদ্য হওয়ার বাইরে, এটি তুলনামূলকভাবে হার্ডওয়্যার বাস্তবায়নকে আরও স্থান-দক্ষ করে তোলে, যা মান বিকাশের সময় অত্যন্ত গুরুত্বপূর্ণ ছিল - নোট, তবে, এটি x এর জন্য লঙ্ঘিত হয়েছে = y = অনন্ত, সুতরাং এটি নিজেরাই একটি দুর্দান্ত কারণ নয়; এটি যুক্তিযুক্তভাবে বাঁকানো যেতে পারে (x - y == 0) or (x and y are both NaN))।

  • আরও গুরুত্বপূর্ণ বিষয়, সেই isnan( )সময়টিতে কোনও পূর্বাভাস ছিল না যে 8087 গণিতগুলিতে NaN আনুষ্ঠানিকভাবে চালু হয়েছিল; প্রোগ্রামার ভাষাগুলির উপর নির্ভর করে না এমন এনএএন মানগুলি সনাক্ত করার একটি সুবিধাজনক এবং দক্ষ উপায় isnan( )যা প্রোগ্রামার ভাষাগুলির উপর নির্ভর করে না যা অনেক বছর সময় নিতে পারে তার জন্য প্রোগ্রামার সরবরাহ করা প্রয়োজন ছিল । আমি এই বিষয়ে কাহানের নিজের লেখাটি উদ্ধৃত করব:

এনএএনগুলি থেকে মুক্তি পাওয়ার কোনও উপায় না থাকলে তারা সিআরএআই-তে ইন্ডাফিনাইটগুলির মতো অপদার্থ হবে; যতক্ষণ না কোনও মুখোমুখি হয়েছিল, অনির্দিষ্টকালের জন্য অনির্দিষ্টকালের জন্য অব্যাহত না রেখে গণনাটি ভালভাবে থামানো হবে। এ কারণেই NaN- এর উপর কিছু ক্রিয়াকলাপ অবশ্যই নন-এনএন-এর ফলাফল সরবরাহ করবে। কোন অপারেশন? … ব্যতিক্রমগুলি হ'ল সি x পূর্বাভাসগুলি হ'ল "x == x" এবং "x! = X", যা প্রতিটি অসীম বা সীমাবদ্ধ সংখ্যা x এর জন্য যথাক্রমে 1 এবং 0 হয় তবে x যদি নম্বর না হয় তবে বিপরীত হয় (এনএন); এগুলি NaN এবং একটি ভাষার ভবিষ্যদ্বাণীপূর্ণ ইসনন (এক্স) এর অভাবের জন্য ভাষার মধ্যে NaN এবং সংখ্যার মধ্যে একমাত্র সহজ অবাস্তব পার্থক্য সরবরাহ করে।

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

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


16
আমি আপনার 1 এবং 2 পয়েন্টগুলি পড়েছি Then তারপরে আমি পর্যবেক্ষণ করেছি যে আসল গাণিতিক (প্রথম স্থানে NaN এর অনুমতি দেওয়ার জন্য প্রসারিত) NaN নিজের সমান - কেবল কারণ গণিতে কোনও ব্যতিক্রম ব্যতীত কোনও সত্তা নিজের সমান। এখন আমি বিভ্রান্ত: কেন আইইইই "রিয়েল পাটিগণিতের আচরণের সাথে মেলে না", যা NaN == NaN করবে? আমি কী মিস করছি?
সর্বাধিক

12
একমত; এনএএনএস-এর অরক্ষিততাটি পাইথনের মতো ভাষার জন্য এর সমতা-ভিত্তিক ধারক শব্দার্থক শব্দগুলির জন্য যন্ত্রণার শেষের কোনও কারণ তৈরি করে নি। আপনি সত্যিই না সমতা যখন আপনি এটি উপরে বিল্ড পাত্রে করার চেষ্টা করছেন একটি সমানতা সম্পর্ক হতে ব্যর্থ করতে চান। এবং সাম্যতার দুটি পৃথক ধারণা থাকা খুব একটা বন্ধুত্বপূর্ণ বিকল্প নয়, যে ভাষাটি শেখা সহজ বলে মনে করা হয় for ফলাফল (পাইথনের ক্ষেত্রে) আইইইই 754 এর প্রতি শ্রদ্ধাবোধ এবং খুব বেশি ভাঙা না হওয়া কনটেন্ট সিঁটমিকের মধ্যে একটি অপ্রীতিকর নাজুক সমঝোতা। ভাগ্যক্রমে, পাত্রে NAN গুলি রাখা বিরল।
মার্ক ডিকিনসন

5
এখানে কিছু দুর্দান্ত পর্যবেক্ষণ: bertrandmeyer.com/2010/02/06/…
মার্ক ডিকিনসন

6
@ স্টেফেনকনন: কোন উপায়ে (0/0) == (+ আইএনএফ) + (-আইএনএফ) থাকার চেয়ে আরও বেশি সংবেদনশীল হতে পারে 1f/3f == 10000001f/30000002f? যদি ভাসমান-পয়েন্টের মানগুলি সমতুল্য শ্রেণি হিসাবে বিবেচিত হয়, তবে এর a=bঅর্থ এই নয় যে "যে গণনাগুলি ফল পেয়েছে aএবং bযদি অসীম নির্ভুলতার সাথে করা হয়, তবে অভিন্ন ফলাফল পেতে পারে", বরং "যা সম্পর্কে জানা আছে তার সাথে aমিলে যা জানে known b"। আমি জানতে আগ্রহী যদি আপনি কোডের এমন কোনও উদাহরণ জানেন যেখানে "ন্যান! = নাএন" থাকা জিনিসগুলি অন্যথায় হওয়ার চেয়ে সহজ করে তোলে?
supercat

5
তাত্ত্বিকভাবে, যদি আপনার NaN == NaN থাকে এবং কোনও isNaN না থাকে তবে আপনি এখনও NaN এর সাথে পরীক্ষা করতে পারতেন !(x < 0 || x == 0 || x > 0)তবে এটি এর চেয়ে ধীর এবং আঠালো হত x != x
ব্যবহারকারী 2357112

50

NaN একটি অপরিজ্ঞাত রাষ্ট্র / সংখ্যা হিসাবে ভাবা যেতে পারে। 0/0 অপরিশোধিত বা স্কয়ার্ট (-3) হওয়ার ধারণার সাথে মিল রয়েছে (আসল সংখ্যা পদ্ধতিতে যেখানে ভাসমান পয়েন্ট বাস করে)।

এই অপরিজ্ঞাত রাষ্ট্রের জন্য NaN এক ধরণের স্থানধারক হিসাবে ব্যবহৃত হয়। গাণিতিকভাবে বলতে গেলে, অপরিজ্ঞাত অপরিজ্ঞাত সমান নয়। আপনিই বলতে পারবেন না যে একটি অপরিজ্ঞাতকৃত মান অন্য অপরিবর্তিত মানের চেয়ে বেশি বা কম। সুতরাং সমস্ত তুলনা মিথ্যা ফিরে।

আপনি যেখানে sqrt (-3) এর সাথে sqrt (-2) তুলনা করেন সে ক্ষেত্রেও এই আচরণটি সুবিধাজনক। তারা উভয়ই এনএএন ফেরত দেবে তবে তারা একই মান ফেরত দিলেও তারা সমতুল্য নয়। সুতরাং NaN এর সাথে আচরণ করার সময় সর্বদা মিথ্যা ফিরিয়ে দেওয়া সমতা থাকা পছন্দসই আচরণ।


5
স্কয়ারটি (1.0000000000000000022) == স্কয়ার্ট (1.0) এর ফলাফল কী হওয়া উচিত? (1E308 + 1E308-1E308-1E308-1E308) == (1E308 + 1E308) কীভাবে? এছাড়াও, ছয়টি তুলনার মধ্যে পাঁচটিই মিথ্যা প্রত্যাবর্তন করে। !=অপারেটর সত্য ফেরৎ। রয়ে NaN==NaNএবং NaN!=NaNউভয় রিটার্ন মিথ্যা কোডটি এক্স তুলনা সম্ভব হবে এবং y চয়ন করতে যখন উভয় operands পারেন চয়ন করে NaN হয় কি হবে ==বা !=
সুপারক্যাট

38

আরও একটি উপমা ফেলতে। আমি যদি আপনাকে দুটি বাক্স তুলে দিই, এবং আপনাকে বলি যে এর দুটিতে একটিও আপেল নেই, আপনি কি আমাকে বলবেন যে বাক্সগুলিতে একই জিনিস রয়েছে?

এনএন-তে কোনও কী কী, ঠিক কী তা নয় সে সম্পর্কে কোনও তথ্য নেই। অতএব এই উপাদানগুলি কখনই সমান বলে বলা যায় না।


6
সংজ্ঞা অনুসারে সমস্ত খালি সেট সমান।
এমসাল্টাররা

28
আপনার দেওয়া বাক্সগুলি খালি রয়েছে বলে জানা যায় না।
জন স্মিথ

7
আপনি কি আমাকে বলবেন যে বাক্সগুলিতে একই জিনিস নেই? আমি এর যুক্তি বুঝতে পারি (NaN==Nan)==false। আমি যা বুঝতে পারি না তার পক্ষে যুক্তিযুক্ত (Nan!=Nan)==true
সুপারক্যাট

3
আমি ধরে নিলাম NaN! = NaN সত্য কারণ x! = Y হিসাবে সংজ্ঞায়িত! (X == y)। মঞ্জুর, আইআইইই স্পেসটি সেভাবে এটি সংজ্ঞায়িত করে কিনা তা আমি জানি না।
কেফ শেকটার 6

6
তবে এই সাদৃশ্যগুলিতে, আপনি যদি আমাকে একটি বাক্স দেন, বলেছিলেন এতে আপেল নেই, তবে আমাকে জিজ্ঞাসা করলেন এটি নিজের সমান কিনা, আপনি কি আমার কাছে না বলার আশা করছেন? কারণ আইইইইই অনুসারে আমাকে এটাই বলতে হবে।
সেমিকোলন

12

NaN এর উইকিপিডিয়া নিবন্ধ থেকে , নিম্নলিখিত অনুশীলনগুলির ফলে NaN হতে পারে:

  • সমস্ত গাণিতিক ক্রিয়াকলাপ> কমপক্ষে একটি অপরেন্ড হিসাবে একটি NaN সহ
  • বিভাগগুলি ০/0/০,, ∞ / ∞, ∞ / -∞, -∞ / ∞, এবং -∞ / -∞
  • গুণমান 0 × ∞ এবং 0 × -∞
  • সংযোজনগুলি ∞ + (-∞), (-∞) + ∞ এবং সমতুল্য বিয়োগফল।
  • Domainণাত্মক সংখ্যার বর্গমূল নেওয়া, negativeণাত্মক সংখ্যার লগারিদম গ্রহণ, 90 ডিগ্রি (বা π / 2 রেডিয়ান) এর বিজোড় একাধিকের স্পর্শক গ্রহণ করা বা বিপরীত সাইন গ্রহণ সহ এর ডোমেনের বাইরে আর্গুমেন্টগুলিতে একটি ফাংশন প্রয়োগ করা বা -1 এর চেয়ে কম বা +1 এর চেয়ে বড় একটি সংখ্যার কোসাইন।

যেহেতু এই অপারেশনগুলির মধ্যে কোনটি এনএএন তৈরি করেছে তা জানার কোনও উপায় নেই, সুতরাং তাদের সাথে তুলনা করার কোনও উপায় নেই যা বোঝায়।


3
তদতিরিক্ত, আপনি যদি কোন অপারেশনটি জানতেন তবে এটি কোনও লাভ করবে না। আমি এমন কোনও সূত্রগুলি তৈরি করতে পারি যা ০.০ এ যায় এমন কোনও পর্যায়ে, যেগুলিতে (আমরা যদি ধারাবাহিকতা ধরে নিই) সেই সময়ে সঠিকভাবে সংজ্ঞায়িত এবং বিভিন্ন মান রয়েছে।
ডেভিড থর্নলি

4

আমি ডিজাইনের যুক্তি জানি না, তবে এখানে আইইইই 754-1985 স্ট্যান্ডার্ডের একটি অংশ রয়েছে:

"সমস্ত সমর্থিত বিন্যাসে ভাসমান-পয়েন্ট সংখ্যাগুলির তুলনা করা সম্ভব হবে, এমনকি অপারেটরগুলির ফর্ম্যাটগুলি পৃথক হলেও তুলনা সঠিক এবং কখনই ওভারফ্লো বা আন্ডারফ্লো হয় না Four "সর্বশেষ কেসটি দেখা দেয় যখন কমপক্ষে একটি অপারেন্ড নাএন হয় Every


2

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

  • (২.7 == ২.7) = সত্য
  • (2.7 == 2.6) = মিথ্যা
  • (২.7 == নাএন) = অজানা
  • (NaN == NaN) = অজানা

এমনকি। নেট কোনও bool? operator==(double v1, double v2)অপারেটর সরবরাহ করে না , সুতরাং আপনি এখনও মূর্খ (NaN == NaN) = falseফলাফলের সাথে আটকে আছেন ।


1

আমি অনুমান করছি যে NaN (একটি নম্বর নয়) এর অর্থ হ'ল: এটি কোনও সংখ্যা নয় এবং সুতরাং এটির তুলনা করা আসলেই অর্থপূর্ণ নয়।

এটি nullঅপারেশনগুলির সাথে এসকিউএল-তে কিছুটা গাণিতিকের মতো: এটির ফলাফল null

ভাসমান পয়েন্ট সংখ্যাগুলির জন্য তুলনাগুলি সংখ্যার মানগুলির তুলনা করে। সুতরাং, এগুলি সংখ্যাসূচক মানের জন্য ব্যবহার করা যাবে না। এনএএন এর সাথে সংখ্যার দিক থেকে তুলনা করা যায় না।


3
"এটি কোনও সংখ্যা নয় এবং সুতরাং এটির তুলনা করা আসলেই অর্থপূর্ণ নয়" " স্ট্রিংগুলি সংখ্যা নয় তবে তাদের সাথে তুলনা করলে তা বোঝা যায়।
জেসন

2
হ্যাঁ, একটি স্ট্রিংকে একটি স্ট্রিংয়ের সাথে তুলনা করা অর্থপূর্ণ হয়। তবে একটি স্ট্রিংকে আপেল, তুলনা করলে খুব বেশি অর্থ হয় না। যেহেতু আপেল এবং নাশপাতিগুলি সংখ্যা নয় তাই এগুলি তুলনা করা কি বোধগম্য? এর চেয়ে বড় কোনটি?
ড্যারেন টমাস

@ ড্যারেনথোমাস: এসকিউএল-তে "" যদি নূ = = তবুও ফুল; " না "যদি নাল <> নাল তবুও FOO কল করুন;" [বা সিনট্যাক্স যাই হোক না কেন] কার্যকর করবে FOO। NaN এর সমতুল্য হওয়ার জন্য if (NaN != NaN) foo();মৃত্যুদন্ড কার্যকর করা উচিত নয় foo, তবে তা ঘটে।
সুপারক্যাট

1

অতি সহজলভ্য উত্তরটি হ'ল কোনও NaN এর কোনও সাংখ্যিক মান থাকে না, তাই অন্য কোনও কিছুর সাথে তুলনা করার মতো কিছুই এতে নেই।

আপনি যদি আপনার NAN গুলি + INF এর মতো কাজ করতে চান তবে তাদের জন্য পরীক্ষার এবং প্রতিস্থাপনকে + INF এর সাথে বিবেচনা করতে পারেন।


0

যদিও আমি একমত যে কোনও প্রকৃত সংখ্যার সাথে এনএএন এর তুলনাটি অযৌক্তিক হওয়া উচিত, আমি মনে করি এনএএনকে নিজের সাথে তুলনা করার কারণ রয়েছে। কীভাবে, উদাহরণস্বরূপ, কেউ এনএএন এবং শান্ত ন্যানকে সংকেত দেওয়ার মধ্যে পার্থক্য আবিষ্কার করতে পারে? যদি আমরা বুলিয়ান মানগুলির সেট হিসাবে সংকেতগুলি মনে করি (যেমন একটি বিট-ভেক্টর) তবে কেউ জিজ্ঞাসা করতে পারে যে বিট-ভেক্টরগুলি একই বা পৃথক এবং সে অনুযায়ী সেটগুলি অর্ডার করতে হবে। উদাহরণস্বরূপ, সর্বাধিক পক্ষপাতদুষ্ট ঘৃণকারীকে ডিকোড করার সময়, যদি বাইনারি বিন্যাসের সর্বাধিক তাৎপর্যপূর্ণ বিটের উপর তাত্পর্যপূর্ণ তাত্পর্যপূর্ণ বিটটিকে সারিবদ্ধ করার জন্য যদি তাৎপর্যটি স্থানান্তরিত করা হয় তবে একটি নেতিবাচক মান একটি শান্ত এনএন হবে এবং কোনও ধনাত্মক মান হবে একটি সংকেত NaN হতে। অবশ্যই জিরো অনন্তের জন্য সংরক্ষিত এবং তুলনাটি বিন্যস্ত হবে be এমএসবি সারিবদ্ধকরণ এমনকি বিভিন্ন বাইনারি ফর্ম্যাট থেকে সংকেতগুলির সরাসরি তুলনা করার অনুমতি দেয়। একই সেট সংকেতযুক্ত দুটি এনএএন সমান হবে এবং সমতার জন্য অর্থ দেবে।


-1

আমার কাছে এটি ব্যাখ্যা করার সবচেয়ে সহজ উপায় হ'ল:

আমার কিছু আছে এবং যদি এটি আপেল না হয় তবে এটি কি কমলা?

আপনি NaN কে অন্য কোনও কিছুর সাথে (এমনকি নিজেই) তুলনা করতে পারবেন না কারণ এর কোনও মূল্য নেই। এছাড়াও এটি কোনও মান হতে পারে (একটি সংখ্যা ব্যতীত)।

আমার কিছু আছে এবং এটি যদি কোনও সংখ্যার সমান না হয় তবে এটি একটি স্ট্রিং?


"এটি একটি সংখ্যা ছাড়া কোনও মান হতে পারে" এর অর্থ কী?
পুশকিন

-2

কারণ গণিত এমন ক্ষেত্র যেখানে সংখ্যা "সবেমাত্র বিদ্যমান"। কম্পিউটিংয়ে আপনাকে অবশ্যই এই সংখ্যাগুলি শুরু করতে হবে এবং আপনার প্রয়োজন অনুসারে তাদের রাজ্য বজায় রাখতে হবে। সেই পুরানো দিনগুলিতে মেমোরি ইনিশিয়ালাইজেশন এমনভাবে কাজ করেছিল যা আপনি কখনই নির্ভর করতে পারবেন না। আপনি এই "ওহ, এটি সর্বদা 0xCD দিয়ে শুরু করা হবে, আমার আলগো ভেঙে যাবে না" সম্পর্কে নিজেকে ভাবতে কখনও অনুমতি দিতে পারেনি ।

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

এটি কেবল গ্রীস যা কম্পিউটার মেমোরি থেকে র্যান্ডম হেল্প প্রোগ্রামিংয়ের পরিবর্তে আপনি নতুন পরিবর্তনশীল হিসাবে তৈরি করতে পারেন। এবং আপনার অ্যালগরিদম যাই হোক না কেন, ভাঙবে না।

এর পরে, যখন আপনি এখনও হঠাৎ করে জানতে পারেন যে আপনার অ্যালগরিদম NaN তৈরি করছে, তখন এটি একবারে প্রতিটি শাখায় সন্ধান করে এটি পরিষ্কার করা সম্ভব। আবার, "সর্বদা মিথ্যা" বিধি এতে অনেক সহায়তা করে।


-4

খুব সংক্ষিপ্ত উত্তর:

কারণ নিম্নলিখিত: nan / nan = 1 অবশ্যই ধরে রাখতে হবে না। অন্যভাবেinf/inf 1 হবে।

(অতএব nanসমান হতে পারে না nanAs >বা <যদি, nanআর্চিমিডিয়ান সম্পত্তি সন্তুষ্ট করে একটি সেটে কোনও অর্ডারের সম্পর্ককে সম্মান জানানো হয় nan / nan = 1, তবে আমাদের আবার সীমাতে থাকবে)।


2
না, তা বোঝা যায় না। আমাদের আছে inf = infএবং inf / inf = nanতাই nan = nanবাধা দেয় nan / nan = nanনা।
তারাবলিউ

আপনারা কি বলতে চান nan / nan = 1? যাইহোক ... আপনার যুক্তিটি অর্থবোধ করে না যদি ইনফ এবং ন্যান অন্য সংখ্যার মতো হয়। এটা ঘটনা না। কেন inf/infঅবশ্যই nanগাণিতিক (বা গণিতের অনির্দিষ্ট রূপ) হওয়া উচিত এবং না 1তা সাধারণ বীজগণিত কারসাজির চেয়ে আরও সূক্ষ্ম (ডি এল'হোসপাল উপপাদ্য দেখুন)।
SEF
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.