ODP سائق ADO.NET بإرجاع عشري مع صفر إضافية في تمثيل سلسلة
سؤال
والمشكلة اليوم هي على النحو التالي: لدينا جدول في قاعدة بيانات أوراكل. يحتوي الجدول على الحقل الذي هو من نوع الرقم (18، 3).
وعلى السطح، وقالت كل من الادخار وتحميل البيانات من العمل الميداني تماما. ومع ذلك، مزيد من التفتيش يكشف أن الأرقام التي لديها ثلاثة أرقام عشرية في نفوسهم، وعلى سبيل المثال 500،001، يتم قراءتها من قاعدة البيانات في مثل هذه الطريقة أن <م> تمثيل سلسلة م> العلامة العشرية لديه الرابع صفر أرقام (على سبيل المثال 500،0010). ويبدو أن هذا يحدث كلما الرقم العشري الثالث غير صفرية.
لأغراض الرياضيات، وهذه ليست مشكلة. ومع ذلك، لدينا المصادقون أن تحقق من عدد الأرقام العشرية في الرقم العشري عن طريق تحويلها إلى سلسلة ثم حساب عدد الأرقام العشرية. منذ يعرف هذا قطعة معينة من البيانات أن يكون في معظم ثلاثة أرقام عشرية، يؤدي الصفر الزائد خطأ التحقق من صحة.
وبما أنني لا يمكن تغيير المصادقون، أنا تركت أتساءل عما اذا كان هناك وسيلة نظيفة للحصول على عشري دون الصفر إضافية، بصرف النظر عن تحويل العدد إلى سلسلة، وتقليم الاصفار زائدة ومن ثم إعادة التوزيع، ذلك؟ أو ينبغي أن يكون القيام بشيء مختلف تماما؟
المحلول
وجرب هذا:
decimal trimmed = ((decimal)((int)(number * 1000))) / 1000
والصب لكثافة يتخلص من الجزء الكسري. أنت لا تحتاج الى كل الأقواس ولكن أعتقد أنه من السهل أن نرى ما يحدث إذا يشار ترتيب العمليات explictily.
نصائح أخرى
وأنا واجهت نفس المشكلة ولكن كنت: number.ToString("F3")