سؤال

#include <iostream>
using namespace std;

int main()
{
    double u = 0;
    double w = -u;
    cout << w << endl;
    return 0;
}

لماذا يتم إخراج هذه القطعة الرائعة من التعليمات البرمجية -0 و لا 0, ، كما يتوقع المرء؟

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

المحلول

يحتوي معيار IEEE 754 لأرقام الفاصلة العائمة على بتة إشارة منفصلة عن الجزء العشري، مما يسمح بأن يكون الصفر سالبًا. ويكيبيديا ينبغي أن تكون قادرة على المساعدة في تفسير هذا.

نصائح أخرى

في IEEE النقطة العائمة 0 و -0 كلاهما قيم متميزة، من هنا تحت عنوان "القيم الخاصة":

لاحظ أن -0 و +0 هما قيمان مميزة ، على الرغم من أنها تقارن على قدم المساواة.

يميز معيار IEEE 754 لحساب النقطة العائمة بين +0 و -0, ، يمكن استخدام هذا عند التعامل مع أرقام صغيرة جدًا مقربة إلى الصفر حيث لا تزال الإشارة ذات أهمية.

لأن "الصفر السالب" هو رقم صالح!

http://en.wikipedia.org/wiki/%E2%88%920_(الرقم)

نلقي نظرة على هذه المادة: http://en.wikipedia.org/wiki/Floating_point.لاحظ أن هناك بت إشارة، حتى لو كانت القيمة صفر.

لأن المزدوج يمكن أن يكون له بالفعل قيم -0، +0، -infinity، +infinity وNaN، والتي يمكن أن تكون نتيجة لمختلف التعبيرات المثيرة للاهتمام، مثل 0/0.

ينظر هنا للمزيد من المعلومات.

لأن توقعاتك خاطئة.

يتطلب IEEE تمثيل الصفر الموجب والسالب بشكل منفصل.

وهذا ما ترونه هنا.

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