سؤال

ومؤخرا، في بعض الأحيان (نادرا) عندما كنا تصدير البيانات من تطبيق لدينا، سجل تصدير يحتوي على قيم التعويم التي تبدو وكأنها "-1 # J". لم أكن قادرا على إعادة إنتاجه لذلك أنا لا أعرف ما يبدو تعويم مثل في ثنائي، أو كيف برنامج Visual Studio يعرضها.

وحاولت النظر إلى شفرة المصدر لprintf، لكنها لم تجد أي شيء (لست متأكدا 100٪ نظرت إلى الإصدار الصحيح على الرغم من ...).

ولقد حاولت غوغلينغ لكن جوجل يلقي بعيدا أي #، على ما يبدو. وأنا لا يمكن العثور على أي قوائم أخطاء تعويم.

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

المحلول

ويمكن أن تكون إما اللانهاية السالبة أو نان (ليس عدد). ويرجع ذلك إلى التنسيق على printf المجال لا يفرق بينهما.

وحاولت التعليمات البرمجية التالية في Visual Studio 2008:

double a = 0.0;
printf("%.3g\n", 1.0 / a);  // +inf
printf("%.3g\n", -1.0 / a); // -inf
printf("%.3g\n", a / a);    //  NaN

والذي ينتج الإخراج التالية:

1.#J
-1.#J
-1.#J

وإزالة محدد 0.3 التنسيق يعطي:

1.#INF
-1.#INF
-1.#IND

وهكذا فمن الواضح 0/0 يعطي نان و-1/0 يعطي اللانهاية السالبة (نان، -inf و+ الوقود النووي المشع هي "خاطئة" عائم أرقام النقطة الوحيدة، لم تخني الذاكرة)

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