Strictfp
سخت ایف پی جاوا پروگرامنگ زبان میں ایک متروک اور بے کار مخصوص لفظ ہے۔ اس سے پہلے، یہ کلیدی لفظ ایک ترمیم کے طور پر استعمال کیا جاتا تھا جس نے پورٹیبلٹی کو یقینی بنانے کے لیے فلوٹنگ پوائنٹ کے حساب کو IEEE 754 سیمنٹکس تک محدود کر دیا تھا۔ سخت ایف پی کلیدی لفظ جاوا میں جاوا ورچوئل مشین (جے وی ایم) ورژن 1.2 کے ساتھ متعارف کرایا گیا تھا اور اس کی فعالیت کو جے وی ایم ورژن 17 میں ہٹا دیا گیا تھا۔ جاوا 17 تک، آئی ای ای ای 754 سیمنٹکس کی ضرورت ہے، اس طرح اس مطلوبہ الفاظ کے استعمال کا کوئی اثر نہیں ہے۔ بنیاد آئی ای ای ای معیاری آئی ای ای ای 754 مختلف فارمیٹس میں فلوٹنگ پوائنٹ کے حسابات اور فلوٹنگ پوائنٹ ویلیوز کے اسٹوریج دونوں کے لیے ایک معیاری طریقہ کی وضاحت کرتا ہے، بشمول سنگل (32 بٹ، جاوا کے فلوٹ میں استعمال ہوتا ہے) یا ڈبل (64 بٹ، جاوا کے ڈبل میں استعمال ہوتا ہے) درستگی۔ کچھ ہارڈ ویئر توسیعی صحت سے متعلق فارمیٹ بھی فراہم کرتے ہیں جو اعلی صحت سے متعلق اور/یا ایک بڑی ایکسپوینٹ رینج فراہم کرتے ہیں۔ اس طرح کے آرکیٹیکچرز پر اس طرح کے توسیعی فارمیٹس کا استعمال کرتے ہوئے انٹرمیڈیٹ کے نتائج کا حساب لگانا زیادہ موثر ہو سکتا ہے۔ یہ راؤنڈ آف غلطیوں، اوور فلوز اور انڈر فلوز سے بچ سکتا ہے جو بصورت دیگر واقع ہوتے ہیں، لیکن اس طرح کے آرکیٹیکچرز پر پروگراموں کو مختلف آؤٹ پٹ پیدا کرنے کا سبب بن سکتے ہیں۔ روایتی x87 فلوٹنگ پوائنٹ فن تعمیر کے ساتھ x86 مشینوں پر توسیعی درستگی کے استعمال سے بچنا خاص طور پر مہنگا تھا۔ اگرچہ حساب کی درستگی کو کنٹرول کرنا آسان تھا، لیکن درمیانی نتائج کے لیے ایکسپونینٹ رینج کو محدود کرنے کے لیے اضافی مہنگی ہدایات کی ضرورت ہوتی تھی۔ جے وی ایم 1.2 سے پہلے، فلوٹنگ پوائنٹ کے حسابات کو سخت ہونا ضروری تھا ؛ یعنی، تمام انٹرمیڈیٹ فلوٹنگ پوائنٹ کے نتائج کو ایسا برتاؤ کرنے کی ضرورت تھی جیسے آئی ای ای ای سنگل یا ڈبل درستگی کا استعمال کرتے ہوئے پیش کیا گیا ہو۔ اس نے عام x87 پر مبنی ہارڈ ویئر پر اسے مہنگا بنا دیا تاکہ یہ یقینی بنایا جا سکے کہ جہاں ضرورت ہو وہاں اوور فلو ہوگا۔ جے وی ایم 1.2 سے شروع کرتے ہوئے، انٹرمیڈیٹ کمپیوٹیشن کو، پہلے سے طے شدہ طور پر، آئی ای ای ای 32 بٹ اور 64 بٹ فارمیٹس سے وابستہ معیاری ایکسپونینٹ کی حدود سے تجاوز کرنے کی اجازت تھی۔ اس کے بجائے انہیں "توسیعی جزو" ویلیو سیٹ کے رکن کے طور پر نمائندگی کرنے کی اجازت دی گئی۔ x87 جیسے پلیٹ فارمز پر، اوور فلوز اور انڈر فلوز جہاں توقع کی جاتی ہے وہاں نہیں ہو سکتے، ممکنہ طور پر زیادہ بامعنی، لیکن کم دہرائے جانے والے نتائج پیدا کرتے ہیں۔ چونکہ ایس ایس ای 2 کی حمایت کرنے والے ایکس 86 پروسیسرز پر ایکس 87 فلوٹنگ پوائنٹ اب ضروری نہیں ہے، جاوا 17 نے ایک بار پھر تمام فلوٹنگ پوائنٹ آپریشنز کو سخت بنا دیا، جس سے مؤثر طریقے سے pre-1.2 سیمنٹکس کو بحال کیا گیا۔ یہ کیسے کام کرتا ہے اوور فلو یا انڈر فلو کی عدم موجودگی میں، سٹرکٹ ایف پی کے ساتھ یا اس کے بغیر نتائج میں کوئی فرق نہیں ہے۔ اگر تکرار ضروری ہے، تو اس بات کو یقینی بنانے کے لیے کہ تمام پلیٹ فارمز پر اوور فلو اور انڈر فلو ایک ہی جگہ پر ہوتا ہے، سخت ایف پی ترمیم کا استعمال کیا جا سکتا ہے۔ سخت ایف پی ترمیم کے بغیر، انٹرمیڈیٹ کے نتائج ایک بڑی ایکسپونینٹ رینج کا استعمال کر سکتے ہیں۔ سٹرکٹ ایف پی ماڈیفایر تمام انٹرمیڈیٹ ویلیوز کو آئی ای ای ای سنگل صحت سے متعلق اور ڈبل صحت سے متعلق ویلیوز کے طور پر پیش کر کے اسے پورا کرتا ہے، جیسا کہ جے وی ایم کے پہلے ورژن میں ہوا تھا۔ یوز پروگرامر ماڈیفائر سٹرکٹ ایف پی کا استعمال اس بات کو یقینی بنانے کے لیے کر سکتے ہیں کہ حسابات پہلے کے ورژن کی طرح انجام دیے جائیں۔ یعنی، صرف آئی ای ای ای سنگل اور ڈبل صحت سے متعلق اقسام کے استعمال کے ساتھ۔ سخت ایف پی کا استعمال اس بات کی ضمانت دیتا ہے کہ فلوٹنگ پوائنٹ کے حسابات کے نتائج تمام پلیٹ فارمز پر یکساں ہیں۔ اسے کلاسز، انٹرفیس اور غیر تجریدی طریقوں پر استعمال کیا جا سکتا ہے۔ جب کسی طریقہ پر لاگو کیا جاتا ہے، تو یہ طریقہ کار کے اندر تمام حسابات کو سخت فلوٹنگ پوائنٹ ریاضی کا استعمال کرنے کا سبب بنتا ہے۔ جب کسی کلاس پر لاگو کیا جاتا ہے، تو کلاس کے اندر تمام حسابات سخت فلوٹنگ پوائنٹ ریاضی کا استعمال کرتے ہیں۔ مرتب وقت کے مستقل تاثرات کو ہمیشہ سخت فلوٹنگ پوائنٹ رویے کا استعمال کرنا چاہیے۔ مثال عوامی سخت ایف پی کلاس مائی ایف پی کلاس {//. یہاں کلاس کے مندرجات۔} حوالہ جات جاوا (پروگرامنگ زبان)