أقترح طريقة جيدة للحصول على رقم بدقة عالية في C #

StackOverflow https://stackoverflow.com/questions/1668870

  •  13-09-2019
  •  | 
  •  

سؤال

أنا برمجة في مشروع يجب علي تخزين مفتاح المستخدم للتكوين الأولي للجهاز، أريد أن أكتبها في C #.

لدي تكوين أولي يتكون من رقمين R و X0 و R = 3.9988 و X0 = 0.5. أريد إضافة مفتاح المستخدم إلى هذه الأرقام. علي سبيل المثال:

المفتاح: HOS110 =>

  • R = 3.9988104111115049049048.
  • X0 = 0.5104111115049049048.

104111115049049048 هي رموز ASCII للمفتاح المتسلسل.

كيف يمكنني تخزين هذه الأرقام؟

هل هناك طريقة أفضل للقيام بذلك؟

تحديث: ماذا عن matlab؟

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

المحلول

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

ومع ذلك، إذا كنت تبحث عن مثل فئة Biginterger، يمكنك العثور على واحدة هنا.

.NET 4.0 سيكون لها فئة Biginteger المدمجة في مكتبات الفصل المسماة System.Numerics.BigInteger.

نصائح أخرى

أنت لست حقا "إضافة" أرقام. أنت تلخص السلاسل.

تخزينها كسلاسل. لا يمكنك الحصول على أكثر دقة بكثير من ذلك.

إذا كنت بحاجة إلى إجراء أي عمليات حسابية، فمن السهل بما يكفي لتحويلها إلى رقم عشري على الطاير.

لا أتابع حقا لماذا تستخدم مفتاح كجزء من رقم، ولكن ترك ذلك جانبا ... System.Decimal (الملقب ب decimal) يبدو وكأنه الأداة المناسبة لهذا المنصب هنا.

حسنا، اعتمادا على الدقة التي تحاول تحقيقها، يمكنك من المحتمل أن توفر هذه كزوج من عدد عشري القيم.

ومع ذلك، إذا كان هذا رمز ASCII، فقد ترغب فقط في حفظ هذه كسلسلة مباشرة. سيؤدي ذلك إلى تجنب المشكلات الدقيقة العددية، خاصة إذا كنت سنسحب إلى 104111 ... قبل استخدام هذه المعلومات.

يبدو أنك تقوم بتخزين "مفتاح"، فلماذا لا تستخدم سلسلة إذن؟

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

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

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