কেন ভিআইএম শূন্য দ্বারা পূর্ণসংখ্যা বিভাগকে অনুমতি দেয়?


16

আমি সবেমাত্র আবিষ্কার করেছি যে ভিম স্পষ্টতই শূন্য দ্বারা বিভাগকে অনুমতি দেয়:

:let a=42/0
:echo a

প্রিন্ট 2147483647(যা এর মান a)।

এটি কি কোথাও নথিভুক্ত এবং কেন ভিএম শূন্য দ্বারা বিভাগের অনুমতি দেয়?


2
:echo 42/0.0আরেকটি ফলাফল দেখার চেষ্টা করুন :)
ভ্যানলিজার

উত্তর:


9

এই আচরণটি eval বিভাগের অধীনে নথিভুক্ত করা হয় :

When dividing a Number by zero the result depends on the value:
      0 / 0  = -0x80000000  (like NaN for Float)
     >0 / 0  =  0x7fffffff  (like positive infinity)
     <0 / 0  = -0x7fffffff  (like negative infinity)
    (before Vim 7.2 it was always 0x7fffffff)

15

এখানে কেন:

42 / 0 tends to +infinity

এবং কীভাবে সর্বাধিক প্রাপ্ত সংখ্যার ভিম উপস্থাপন করে?

2147483647

দেখা :h limits

তদ্ব্যতীত, float2nrফাংশন ডকুমেন্টেশনে বলা হয়েছে:

When the value of {expr} is out of range for a |Number| the
result is truncated to 0x7fffffff or -0x7fffffff.  NaN results
in -0x80000000.

সুতরাং আপনার এখানে আপনার 2 নম্বর রয়েছে: + 2147483647এবং - 2147483647

সর্বশেষ সংখ্যাটি মান -2147483648উপস্থাপনের জন্য ব্যবহৃত NaNহয়।

এটি evalবিভাগের দ্বারা এটি নিশ্চিত করা হয়েছে ( মেয়া কুলপা: @ কুওলম এটি আমার আগে পোস্ট করেছেন):

When dividing a Number by zero the result depends on the value:
    0 / 0  = -0x80000000    (like NaN for Float)
   >0 / 0  =  0x7fffffff    (like positive infinity)
   <0 / 0  = -0x7fffffff    (like negative infinity)

@ ভ্যানল্যাসার যেমন বলেছেন, এটি কেবল পূর্ণসংখ্যার জন্য কাজ করে, ভাসমান পয়েন্ট সংখ্যাটির জন্য আপনার আরও ধারাবাহিকতা রয়েছে:

 1/0.0     =  inf
 1/0.0 + 1 =  inf
 1/0.0 - 1 =  inf

-1/0.0     = -inf
-1/0.0 - 1 = -inf
-1/0.0 + 1 = -inf

সেক্ষেত্রে 0ণাত্মক সংখ্যাকে বিয়োগ কেন সর্বনিম্ন সংখ্যা নয়? -> vi.stackexchange.com/questions/4623/…
জ্যাকব

আমি আমার প্রশ্নটি সম্পাদনা করেছি
4

2147483647 অবশ্যই অনেক অনন্ত চেয়ে শূন্য কাছাকাছি। সুতরাং, এত অল্প সংখ্যক সহ অসীম প্রতিনিধিত্ব করা সহায়ক বলে মনে হয় না, কমপক্ষে আমার পক্ষে নয়।
রেনি নিফেনিগার

2

সীমাবদ্ধ নামক কিছু ব্যবহার করার সময় ক্যালকুলাসে এই আচরণটি কার্যকর।

লিমি এন -> 1 / এন = + ইনফ থেকে 0 ^ +

এটি এ হিসাবে লিখিত হতে পারে: যেমন এন -> 0 ^ +, 1 / n -> + ইনফ

এটি যেমন পড়ছে .. এন ডান থেকে শূন্যের কাছে যাওয়ার সাথে সাথে ফাংশন 1 / n ইতিবাচক অনন্তের কাছে পৌঁছেছে।

এই যুক্তিটির চাক্ষুষ ব্যাখ্যা দেখতে, http://www.wolframalpha.com/input/?i=limit+n-%3E0+of+1%2Fn এ পপ করুন

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


আপনার কাছে শেষ অনুচ্ছেদের কোনও উত্স আছে? পূর্ণসংখ্যা শূন্য দ্বারা বিভাগ সি undefined হয়, কোনো আচরণ আপনি দেখতে প্রসেসর উপর নির্ভরশীল, ইত্যাদি
muru

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