easyDelphi Q&A
+2 تصويتات
40 مشاهدات
السلام علكيم،

عندي جدول فيه حقل من المفروض ان يحتوى قيمة عددية(وزن او كمية مادة معينة)، انا كنت معتاد ان اخزن الاعداد ذات الفاصلة في حقول من نوع double لكن قرأت ان هذه الحقول تنقصها الدقة، فهل عليا ان استبدلها بـ decimal مع العلم ان هذا العدد لن يتجاوز في اي حال من الاحوال 9999.
سُئل في تصنيف SQL Server بواسطة (2,010 نقاط) | 40 مشاهدات
 

1 إجابة واحدة

+4 تصويتات
أفضل إجابة
بالعكس double لا تنقصها الدقة، بل هي افضل في التعامل مع الفواصل، لكن ما يحدث هو عند كثرة عمليات التقسيم و الضرب، سينشأ في الناتج خطأ صغير جداً رقم بالفواصل مثلا 0.0000009599

الديسيمال او numeric عند تحديد عدد الخانات ما بعد الفاصلة صغير  مثلا 4 خانات لما بعد الفاصلة، تعامل قاعدة البيانات على انه رقم صحيح integer، لكن مضروب ب 10 بعدد الخانات

مثلا 65 هو يخزن في قاعدة البيانات 650000
أو 65.79 هو 657900

لذلك عندي عمليات القسمة و الضرب، هو لن يتعامل مع الفواصل، هو يتعامل مع اعداد صحيحة يتم اهمال الكسور الاكبر من 4 خانات لذلك لا ينتج عنها مشكلة في الارقام، لكنك ستكون امام محدودية عدد الارقام بعد الفاصلة، يستعمل عادة في قيم العملات، و ليس الكميات.

المقابل لهذا في الدلفي هو Currency وهو لا يملك خيار تحدد عدد الخانات هو فقط 4 بعد الفاصلة.
تم الرد عليه بواسطة (9,270 نقاط)
مختارة بواسطة

اسئلة متعلقة

+4 تصويتات
2 إجابة
+5 تصويتات
2 إجابة
+3 تصويتات
1 إجابة
سُئل سبتمبر 21 في تصنيف SQL Server بواسطة Yamada Fakir (1,250 نقاط) | 81 مشاهدات
+4 تصويتات
2 إجابة
سُئل أغسطس 19 في تصنيف SQL Server بواسطة Yamada Fakir (1,250 نقاط) | 72 مشاهدات
+2 تصويتات
0 إجابة
سُئل سبتمبر 2 في تصنيف SQL Server بواسطة Yamada Fakir (1,250 نقاط) | 35 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

248 سؤال
450 إجابة
790 تعليق
144 مستخدم