Decimal128 (عشري عالي الدقة)

آخر تحديث: 2026-10-09

Decimal128 (عشري عالي الدقة)

Decimal128 هو نوع العشري عالي الدقة في MongoDB، المبني على معيار النقطة العائمة العشرية IEEE 754-2008، مع 34 رقمًا عشريًا معنويًا. يناسب المال والأسعار وأي بيانات تحتاج حسابًا دقيقًا، متجنبًا أخطاء التقريب الثنائي في Double. يُنشأ بـ `Decimal128('19.99')` أو الاختصار `NumberDecimal('19.99')` المتاح في mongosh 5.0+.

الفئةأنواع BSON
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

Decimal128("<decimal string>")
NumberDecimal("<decimal string>")  // mongosh 5.0+
{ price: Decimal128("19.99") }

القيمة المرجعة:يُرجع قيمة BSON من نوع Decimal128

▶ مثال

نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):

// Decimal128: إنشاء ومطابقة دقيقة
use shop
db.prices.insertOne({ item: 'apple', price: Decimal128('19.99') })
db.prices.find({ price: { $eq: Decimal128('19.99') } })

المخرجات:

{ _id: ObjectId('...'), item: 'apple', price: Decimal128('19.99') }

📌 ملاحظات

📚 دروس ذات صلة

❓ الأسئلة الشائعة

Qما الفرق بين Decimal128 و Double؟
ADouble نقطة عائمة ثنائية حيث 0.1 غير دقيق؛ بينما يخزّن Decimal128 أرقامًا عشرية (34 رقمًا معنويًا) لحسابات مال دقيقة.
Qما أكبر قيمة يمكن أن يحملها Decimal128؟
Aمدى الأس تقريبًا ±6143، ومدى القيمة تقريبًا ±9.99×10^6144 — أبعد من أي حاجة تجارية.
Qلماذا أخزّن الأسعار كنوع Decimal128؟
Aالمال يحتاج حسابًا عشريًا دقيقًا؛ مجاميع Double تنحرف (مثل 0.30000000000000004) وتكسر المطابقة.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%