ODP سائق ADO.NET بإرجاع عشري مع صفر إضافية في تمثيل سلسلة

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

سؤال

والمشكلة اليوم هي على النحو التالي: لدينا جدول في قاعدة بيانات أوراكل. يحتوي الجدول على الحقل الذي هو من نوع الرقم (18، 3).

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

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

وبما أنني لا يمكن تغيير المصادقون، أنا تركت أتساءل عما اذا كان هناك وسيلة نظيفة للحصول على عشري دون الصفر إضافية، بصرف النظر عن تحويل العدد إلى سلسلة، وتقليم الاصفار زائدة ومن ثم إعادة التوزيع، ذلك؟ أو ينبغي أن يكون القيام بشيء مختلف تماما؟

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

المحلول

وجرب هذا:

decimal trimmed = ((decimal)((int)(number * 1000))) / 1000

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

نصائح أخرى

وأنا واجهت نفس المشكلة ولكن كنت: number.ToString("F3")

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