يصف المثال الموجود في هذه المقالة الاستخدام البسيط لفئة BigDecimal في Java، وهي مهارة عملية جدًا في برمجة Java، ويتم مشاركتها مع الجميع كمرجع لك. تحليل الاستخدام المحدد هو كما يلي:
بشكل عام، عندما يتعلق الأمر بحسابات الأعمال في Java، نعلم جميعًا أنه لا يمكن استخدام float وdouble لأنهما لا يستطيعان إجراء حسابات دقيقة. ومع ذلك، فإن مصممي Java يزودون المبرمجين بفئة BigDecimal مفيدة جدًا، والتي يمكنها تحسين عيوب الفئات العائمة والمزدوجة التي لا يمكنها إجراء حسابات دقيقة. توجد فئة BigDecimal ضمن حزمة فئة java.maths. دعونا أولاً نلقي نظرة على كيفية إنشاء كائن BigDecimal. يحتوي على العديد من المنشئات، فيما يلي المنشئان الأكثر استخدامًا للتوضيح: أحدهما BigDecimal(double val) والآخر هو BigDecimal(String). لا يبدو أن هناك فرقًا كبيرًا بين الاثنين، ولكن كما يقول وصف واجهة برمجة التطبيقات:
/*يمكن أن تكون نتائج هذا المنشئ غير متوقعة إلى حد ما. قد يفترض المرء أن BigDecimal(.1) الجديد يساوي تمامًا .1، ولكنه في الواقع يساوي .1000000000000000055511151231257827021181583404541015625. وذلك لأنه لا يمكن تمثيل .1 تمامًا مزدوج (أو لذلك المادة، ككسر ثنائي بأي طول محدود). وبالتالي، فإن القيمة الطويلة التي يتم تمريرها إلى المُنشئ لا تساوي تمامًا .1، بغض النظر عن المظاهر. ومن ناحية أخرى، يمكن التنبؤ تمامًا بالمُنشئ (السلسلة). : new BigDecimal(".1") يساوي تمامًا .1، كما هو متوقع، لذلك يوصى عمومًا باستخدام المُنشئ (String) بدلاً من هذا.*/وهذا يعني أن المُنشئ الذي يستخدم double كمعلمة لا يمكنه إنشاء كائن BigDecimal بدقة، فأنت بحاجة إلى تحديد بيئة سياق، أي تحديد البت الدقيق. يمكن للمنشئ الذي يستخدم كائن سلسلة كمعلمة إنشاء كائن BigDecimal بدقة. يرجى إلقاء نظرة على الكود أدناه:
import java.math.*;public class TestBigDecimal { public static void main(String args[]){ BigDecimal bd = new BigDecimal("10.123"); = new BigDecimal(10.123); "/ن"+BD1 }}الإخراج بعد التشغيل:
10.123
10.1229999999999993320898283855058252811431884765625
لذلك، عندما نختار المُنشئ، فإن ذلك يعتمد على الاحتياجات المحددة.
بالإضافة إلى ذلك، سيتساءل العديد من الأشخاص عن كيفية تحويل الأنواع الأساسية، مثل الكائنات int وfloat وdouble وlong وBigDecimal من وإلى بعضها البعض. بسيط جدًا:
يتم تحويل الأنواع الأساسية إلى كائنات BigDecimal المقابلة من خلال المُنشئات، وتوفر فئة BigDecimal طرقًا مثل intValue() وfloatValue() وdoubleValue() وlongValue() لتحويل كائنات BigDecimal إلى قيم مقابلة.
فيما يتعلق بكيفية حساب BigDecimal، أخذت سؤال أحد الأشخاص في المنتدى كمثال لكتابة طريقة حساب BigDecimal بإيجاز. الموضوع هو: كان لي باي يسير في الشارع دون وقوع أي حادث، ويحمل وعاءً لشراء النبيذ. عندما تصادف متجرًا، تضاعف المبلغ، وعندما ترى الزهور، تشرب دوًا. وعندما تقابل الزهور ومتجرًا، تشرب كل النبيذ الموجود في الوعاء. كم عدد النبيذ الموجود في وعاء Li Bai ؟
يجب دفع هذا السؤال للأمام من الخلف إلى الأمام، ويجب عكس الحساب، وأخيراً يمكن الحصول على حجم النبيذ الأصلي.
import java.math.*;public class Libai { public static void main(String args[]){ BigDecimal volumn = new BigDecimal("0"); for (int i=0; i<5; i++){ volumn = volumn .add(new BigDecimal("1")); volumn = volumn.divide(new BigDecimal("2")); System.out.print(volumn }});نتائج التشغيل:
0.96875
آمل أن يكون ما تصفه هذه المقالة مفيدًا للجميع في تعلم برمجة Java.