سؤال

واجهت سلوك غريب في بيرل. يجب أن ينتج عن الطرح التالي صفرًا كنتيجة (وهو ما يفعله في بيثون):

print 7.6178E-01 - 0.76178
-1.11022302462516e-16

لماذا يحدث وكيفية تجنب ذلك؟

يظهر تأثير PS على "v5.10.0 تم تصميمه لـ x86_64-linux-gnu-thread-multi" (Ubuntu 9.04) و "v5.8.9 تم تصميمه لـ Darwin-2Level" (Mac OS 10.6)

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

المحلول

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

إذا كنت بحاجة إلى معالجة أفضل للأرقام ، تحقق من bignum براغما.

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