প্রকৃত সর্বনিম্ন সম্ভাব্য ইতিবাচক বাস্তব সংখ্যাটি কী


11

এমএসডিএন বলেছে যে রিয়েল সংখ্যার পরিসীমা হ'ল - ৩.৪০ ই + ৩৮ থেকে -১.১৮ ই - ৩৮, ০ এবং ১.১E ই - ৩৮ থেকে ৩.৪০ ই + ৩৮ App দৃশ্যত সত্যিকারের নীচের সীমাটি অনেক কম। নিম্নলিখিত স্ক্রিপ্টটি 1.401298E-45 সহ একটি বাস্তব কলামটি জনপ্রিয় করে:

CREATE TABLE a
  (
    r1 REAL NULL ,
    r2 REAL NULL ,
    r3 REAL NULL
  ) ;
GO
INSERT  INTO a
        ( r1, r2 )
VALUES  ( 1.18E-37, 10 ) ;
GO
DECLARE @i INT ;
SET @i = 1 ;

WHILE @i < 20 
  BEGIN ;

    UPDATE  a
    SET     r1 = r1 / r2 ;

    SELECT  r1 ,
            r2
    FROM    a ;

    SET @i = @i + 1 ;

  END ;
GO
DROP TABLE a ;

r1            r2
------------- -------------
1.18E-38      10

(snip)

r1            r2
------------- -------------
1.401298E-45  10

কেউ কি আমাকে বলতে পারবেন যে সম্ভাব্যতম সম্ভাব্য ইতিবাচক সংখ্যাটি কী?


1
এই ধরণের সাথে অবশ্যই কিছু অদ্ভুত আচরণ রয়েছে। ক্ষুদ্রতম স্কেলার আক্ষরিক আমি কাস্ট করতে পেরেছি এবং নির্বাচন করতে পেরেছি 1.1754944E-38, যা ফিরে এসেছে 1.175494E-38 (শেষে নিখোঁজ 4 নোট করুন) - আপনি সরাসরি 1.175494E-38 কাস্ট করার চেষ্টা করলে আপনি শূন্য হয়ে যান পেছনে.
জন সেগেল

উত্তর:


13

সর্বনিম্ন ধনাত্মক (অস্বাভাবিক) একক-নির্ভুলতা ভাসমান-পয়েন্টের মান 2 −149 ≈ 1.4 × 10 −45 । সর্বনিম্ন ধনাত্মক স্বাভাবিক মান 2 −126 ≈ 1.18 × 10 −38 ( রেফারেন্স )।

DECLARE
    @r1 real = POWER(2e0, -126),
    @r2 real = POWER(2e0, -23)

SELECT
    @r1,
    @r2,
    @r1 * @r2,
    CONVERT(binary(4), @r1 * @r2);

দ্বিগুণ-নির্ভুলতার জন্য, সর্বনিম্ন ইতিবাচক নিম্নতর :

DECLARE @r1 float = POWER(2e0, -1075);

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