سؤال

تقتصر العمليات العددية التي نقوم بها في برامجنا على عدد البايتات التي تحددها اللغة لنمذجة بيانات معينة (أو ربما تدعم الأجهزة). لنفترض أنه يمكنني استخدام عدد صحيح لإجراء حسابات على راتب بلدي (حتى "القصير" أكثر من كافية لمدة عام واحد !!! لذلك ، نذهب لأشياء مثل طويلة وأشياء طويلة. لكن ألا نزال نرحم عدد البتات التي يتم تقديمها لنا.

لذا ، ماذا لو كنت أحاكي العمليات العددية في البرامج؟ قل فصلًا يتجسد ويمكنه القيام بعمليات رقمية على أرقام بأرقام 1000 من الأرقام ... بالطبع سيكون بطيئًا جدًا ، لكنني لست قلقًا جدًا بشأن التعقيد ولكنني أنظر إلى المزيد من الحساب ...

ربما يمكنني استخدامه لحساب دقة PI إلى 1000 رقم في أشهر أو عهد ميرسن في سنوات قليلة واحصل على 100 ألف دولار ؛)

لذا سؤالي الآن ، 1) هل هناك بالفعل أي مكتب من هذا القبيل للقيام بهذا النوع من الأشياء هناك (في C/C ++). 2) إذا ذهبت لتنفيذ واحدة ، هل لديك أي اقتراحات لي؟ (+، -، *، /، ٪ ، << ، >> يجب أن أعتقد أن العمليات بما يكفي)


ملاحظة:

  1. أنا C/C ++ مبرمج.

  2. وبدأ هذا القيد يزعجني من أيام مدرستي.

هل كانت مفيدة؟

المحلول

تُعرف هذه الأنماط بأرقام التحديد التعسفي. في جافا ، هناك فصول BigDecimal و BigInteger التي تتعامل مع العمليات الأساسية (+، -، *، /) على مستوى الأرقام. ليس لديهم قيود على الحجم "المدمجة". فهي في الواقع ليست بطيئة وتستخدم في الكثير من المجالات في العالم الحقيقي.

لا يتم دمج C/C ++ ، ولكن هناك الكثير من المكتبات هناك. انظر قائمة هنا:http://en.wikipedia.org/wiki/arbitrary-precision_arithmetic#libraries

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top