CodeGym /جاوا بلاگ /Random-UR /جاوا فلوٹ کی ورڈ
John Squirrels
سطح
San Francisco

جاوا فلوٹ کی ورڈ

گروپ میں شائع ہوا۔
کمپیوٹنگ ٹکنالوجی کی ترقی میں کسی وقت، یہ واضح ہو گیا کہ مرکزی پروسیسنگ یونٹس کو فلوٹنگ پوائنٹ نمبروں پر کارروائی کرنے کے لیے ہارڈ ویئر ڈیوائسز کی ضرورت ہے۔ آج، تمام کمپیوٹر فن تعمیر ایسے نمبروں کے ساتھ مؤثر طریقے سے کام کر سکتے ہیں۔ یقینا، پروگرامنگ زبانوں میں، آپ متعلقہ ڈیٹا کی اقسام کے بغیر بھی نہیں کر سکتے۔ جاوا میں دو فلوٹنگ پوائنٹ ڈیٹا کی قسمیں ہیں: فلوٹ اور ڈبل۔ جاوا فلوٹ کلیدی لفظ ایک حقیقی نمبر کی وضاحت کرتا ہے جو میموری میں 32 بٹس پر قبضہ کرتا ہے۔ ہم اس مضمون میں ایسے نمبروں کے بارے میں بات کریں گے۔

فلوٹنگ پوائنٹ نمبرز۔ کمپیوٹر میں حقیقی نمبر کیسے محفوظ ہوتے ہیں؟

کمپیوٹر میموری میں حقیقی نمبروں کو ذخیرہ کرنے کے لیے، بٹس کی ایک مخصوص تعداد مختص کی جاتی ہے۔ ایک حقیقی نمبر بطور نشانی (جمع یا مائنس)، مینٹس اور ایکسپوننٹ کے طور پر محفوظ کیا جاتا ہے۔ مانٹیسا اور ایکسپوننٹ کیا ہے اس کی بہترین مثال کے ساتھ وضاحت کی گئی ہے۔ چاند کی تخمینی کمیت 7*1022 ہے۔ یہاں 7 مینٹیس ہے، 22 میں ایکسپوننٹ۔ اسکرین پر بڑے یا اس کے برعکس، بہت چھوٹے نمبر دکھاتے وقت، آپ 7E22 جیسا اندراج دیکھ سکتے ہیں۔ یہ فلوٹنگ پوائنٹ نمبر ہے، اور یہاں 7 مینٹیس ہے، اور 22 10 کا ایکسپوننٹ یا پاور ہے۔ اس اشارے کو ایکسپونینشل نوٹیشن کہا جاتا ہے۔

جاوا فلوٹ کی ورڈ اور جاوا ڈبل ​​کی ورڈ

جاوا میں فلوٹ ویلیوز (فلوٹنگ پوائنٹ نمبرز یا ریئل نمبرز) کو float اور double کی اقسام سے ظاہر کیا جاتا ہے ۔ یہ وہ مطلوبہ الفاظ ہیں جو اعشاریہ کے بعد ایک خاص نشان تک اقدار کو ذخیرہ کرنے کے لیے استعمال ہوتے ہیں۔ ڈبل وہ اعداد ہیں جن میں دوہرا درستگی ہے، جتنا ممکن ہو حساب کے نتیجے میں دی گئی یا حاصل کی گئی قدروں کے قریب ہو۔ Java Double کسی بھی حسابی حسابات (مربع جڑ، سائن، کوزائن، ..) کے ساتھ ساتھ ان تمام حسابات کے لیے استعمال کیا جاتا ہے جہاں ایک خاص درستگی ضروری ہے۔ فلوٹ ڈیٹا کی قسم کو کم درست فلوٹنگ پوائنٹ ٹائپ کے لیے استعمال کیا جاتا ہے۔ یادداشت کو بچانے کے لیے اسے بہت کم استعمال کیا جاتا ہے۔ یہاں ذیل میں ہمیں فلوٹ اور ڈبل کے بارے میں اہم معلومات کے ساتھ ساتھ ان کے فرق کے ساتھ ایک ٹیبل ملا ہے۔
تیرنا دگنا
مرکزی فلوٹ ایک واحد صحت سے متعلق قدر ہے۔ یہ ایک ڈبل صحت سے متعلق قدر ہے۔
پہلے سے طے شدہ سائز 4 بائٹس (32 بٹس) 8 بائٹس (64 بٹس)
پہلے سے طے شدہ قیمت 0.0f 0.0
رینج 1.4e–045 سے 3.4e+038 تک 4.9e–324 سے 1.8e+308 تک
یہ کس چیز کے لیے استعمال ہوتا ہے۔ میموری کو بچانے کے لیے جزوی اعداد کے ساتھ نسبتاً درست طریقے سے کام کرنا
تو Float کلیدی لفظ کا مطلب ہے ایک عدد، ایک واحد درستگی کی قدر جو میموری میں 32 بٹس یا 4 بائٹس لیتی ہے۔ کچھ پروسیسرز پر، اس طرح کے نمبروں کے ساتھ کام کرنا تیز تر ہوتا ہے، اور جیسا کہ پہلے ہی ذکر کیا گیا ہے، وہ دوہری درستگی والے نمبروں کے مقابلے میں کم جگہ لیتے ہیں۔ تاہم تیز رفتاری کے ساتھ یہ کہنا ناممکن ہے۔ ہم کہتے ہیں کہ کچھ جدید پروسیسر بالکل دوگنا درست نمبروں پر تیزی سے عمل کرتے ہیں۔

جاوا فلوٹ اور ڈبل ڈیکلریشن

آپ دوسری اقسام کی تعداد کی طرح متعدد قسموں کو ڈبل قرار دے سکتے ہیں:
double myDouble = 2.7;
تاہم، اگر آپ اس طرح سے فلوٹنگ پوائنٹ نمبر کی نمائندگی کرتے ہیں، تو کمپائلر آپ سے نمبر کی قسم کو دوگنا کرنے کی ضرورت کرے گا۔ یہاں فلوٹ متغیر کی ایک غلط مثال ہے :
public class FloatExample {
   public static void main(String[] args) {
//double and float variables
       double myDouble = 2.7;
       float myFloat = 3.14;
   }
}
اگر آپ اس پروگرام کو چلاتے ہیں تو کیا ہوتا ہے:
Error:(4, 25) java: incompatible types: possible lossy conversion from double to float
حقیقت یہ ہے کہ فلوٹ نمبر استعمال کرنا ناپسندیدہ ہے، اور یہ صرف میموری کو بچانے کے لیے کیا جانا چاہیے۔ جاوا میں تمام حقیقی فریکشنل نمبرز بذریعہ ڈیفالٹ ڈبل ہیں ، اور زبان کا نحو بھی اس پر زور دیتا ہے۔ اگر آپ واقعی فلوٹ قسم کے ساتھ کام کرنا چاہتے ہیں، تو آپ کو نمبر کو ختم کرنے والے f کے ساتھ واضح طور پر اس کی وضاحت کرنے کی ضرورت ہے۔
public class FloatExample {
   public static void main(String[] args) {
//double and float variables
       double myDouble = 2.7;
       float myFloat = 3.14f;
   }
}
ویسے، فلوٹ اور ڈبل نمبرز کو ایکسپونینشل شکل میں لکھا جا سکتا ہے۔
float myFloat2 = 2E22f;
double myDouble2 = 3e10;
اگر آپ ان کی "نارمل" نمائندگی میں کافی بڑی تعداد استعمال کرتے ہیں، تو Java انہیں فوری طور پر ایکسپونینشل شکل میں دکھائے گا۔ آئیے ایک مثال دیتے ہیں:
public class FloatExample {
   public static void main(String[] args) {
//float variables
               float myFloatNumber1=2182818284590.45f;
               float myFloatNumber2=19822612787260.141592181f;
               System.out.println("myFloatNumber1 = " + myFloatNumber1);
               System.out.println("myFloatNumber2 = " + myFloatNumber2);
       System.out.println("myFloatNumber1 + myFloatNumber2 = " + myFloatNumber1 + myFloatNumber2);
           }
       }
اس پروگرام کے کام کا نتیجہ یہاں ہے:
myFloatNumber1 = 2.1828183E12 myFloatNumber2 = 1.98226121E13 myFloatNumber1 + myFloatNumber2 = 2.1828183E121.98226121E13

خصوصی فلوٹ اور ڈبل نمبرز کی مثال

جاوا زبان میں تین خاص فلوٹنگ پوائنٹ نمبرز ہیں، جو اوور فلو اور غلطیوں کی نشاندہی کرنے کے لیے استعمال ہوتے ہیں۔ وہ یہاں ہیں:
  • مثبت انفینٹی ایک مثبت نمبر کو 0 سے تقسیم کرنے کا نتیجہ ہے۔ جس کی نمائندگی کنسٹینٹ ڈبل ۔POSITIVE_INFINITY اور Float.POSITIVE_INFINITY ۔

  • منفی انفینٹی ایک منفی نمبر کو 0 سے تقسیم کرنے کا نتیجہ ہے۔ Double.NEGATIVE_INFINITY اور Float.NEGATIVE_INFINITY مستقل کے ذریعہ نمائندگی کی جاتی ہے۔

  • NaN (نمبر نہیں) 0/0 کے حساب کی نمائندگی کرتا ہے یا منفی نمبر کا مربع جڑ لیتا ہے۔ Constants Double.NaN اور Float.NAN سے نمائندگی کرتا ہے ۔

یہاں ان خصوصی فلوٹنگ پوائنٹ نمبرز کو استعمال کرنے کی ایک مثال ہے:
public class FloatExample {
   public static void main(String[] args) {
       int myInt = 1;
       float zero = 0.0f;
       double negZero = -0.0;
       double negativeInfinity = Double.NEGATIVE_INFINITY;
       double positiveInfinity = Float.POSITIVE_INFINITY;

       System.out.println(myInt / zero);
       System.out.println(myInt / negZero);
       System.out.println(zero == negZero);
       System.out.println(negativeInfinity * 0);
       System.out.println(positiveInfinity+negativeInfinity);

   }
}
نتیجہ یہ ہے:
انفینٹی - انفینٹی سچی NaN NaN

کیا ڈبل ​​درستگی کافی ہے؟

درحقیقت، ڈبل قسم کی دوہری درستگی کے باوجود، فلوٹنگ پوائنٹ نمبرز کا استعمال کرنا، مثال کے طور پر، مالی حسابات میں، بہترین خیال نہیں ہے کیونکہ گول کی غلطیاں ناقابل قبول ہیں۔ لہذا، اسکرین پر درج ذیل پروگرام کے آؤٹ پٹ کو ظاہر کرنے کی کوشش کریں۔
public class FloatExample {
   public static void main(String[] args) {
       System.out. println( "2.0 - 1.1 = " + (2.0 - 1.1));
   }
}
آپ کو درج ذیل نتیجہ ملے گا:
2.0 - 1.1 = 0.8999999999999999
یہ سمجھنا منطقی ہوگا کہ نتیجہ 0.9 ہوگا۔ تاہم، اس طرح کی غلطیاں کافی عام ہیں اور اعداد کی اندرونی بائنری نمائندگی سے وابستہ ہیں۔ ہم مثال کے طور پر ⅓ کی صحیح قدر کو اعشاریہ کسر کے طور پر ظاہر نہیں کر سکتے۔ بلاشبہ، بائنری نظام میں بھی اسی طرح کی پابندیاں ہیں۔ اگر کام کے لیے راؤنڈنگ کی غلطیوں کو ختم کرنے کی ضرورت ہے، تو جاوا کے پاس اس کے لیے BigDecimal کلاس ہے۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION