أول مرة هنا ؟ تفحص قواعد المشاركة و معلومات أخرى عن عرب overflow!
x

كيف تجعل المستخدم يدخل عدد معين من المتغيرات بعد العلامه العشريه في لغة ال C

+1 صوت
476 مشاهدات

اريد كود بلغة c ان يجعل المستخدم مهما ادخل من الارقام بعد العلامه العشريه لا يخزن سوي رقمين فقط في المتغير علي سبيل المثلا
المستخدم يدخل في المتغير a 12.123456789
والذي يخزن فقط a 12.12 اريده في التخزين وليس في جمل الطباعه

3 إجابة

+2 صوت

 
أفضل إجابة

يختلف تمثيل الاعداد من نوع floating -point من نظام لأخر لاعتبارات الهاردوير او طريقة التمثيل نفسها ولكن على اي حال يمكنك ان تجرب هذا الكود وهو ليس بدقة 100% .

    #include <stdio.h>

float float_2only(const float);

int main(void)
{
      float f_n = 2.123456 ;

      f_n = float_2only(f_n );            // will only store 2 digit after floating-point .
      printf(" num = %f\n",f_n)  ;    // print it to show it .

      return 0 ;
}

float float_2only(const float f_num)
{
          return (float) ( (int) (f_num *100.0) )/100.0 ;
}
الاجابه جميله وسليمه لما تبقي داخل البرنامج بس لو اليوزر اللي دخل سبيل المثال
scanf("%f",&f_n);
لو دخلت مثلا 12.73
البرنامج هيخزن
12.72
وبالتالي دا اللي خلاني اسأل وفي علاج الموضوع دا الوحيد اني اغير من float ل double
انت ممكن من البداية اصلا تخزن رقم زي 15.3 تتحفظ 15.2999999 لان طريقة التمثيل بتختلف وبتكون تقريبية ومش بدقة 100‎%‎
ماهي دي مشكلتي مع البرنامج انه من الاساس موش بيخزن اللي انا عاوزه وانا اللي محتاجه يخزنه زي ما هوه بس دي حاجه علي ما اعتقد ملهاش اجابه ودي مشكله من مشاكل لغات البرمجه مع التعامل مع الجزء العشري ..... شكرا لاجابات حضرتك :D
+2 صوت

انا عندي اقتراح
جرب تشتغل مع ال input علي انه string
و بعد كدا بتقسم ال string دي ب function ل 2 integers
الاول هو الارقام الي قبل ال point و التاني الارقام الي بعد ال point
دا مجرد اقتراح و اعتقد ال functions الي ف library string تساعد علي كدا

هوه اقتراح كويس لو مطلوب ادخل string بس للأسف كان المطلوب اني ادخل float ولو حولته ل string هيحصل مشاكل والرقم هيتغير خاصة في لغة c لانها موش هتقبل احول حاجه من نوع فلوت لحاجه من نوع string لانها بتعامل string كأنه array of characters
–2 صوت

اضرب الرقم بـ 100 ثم خزنه في int (تتخلص من الفواصل )
ثم خزنه بـ float و بعدها اقسمه على 100

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

أحدث الشارات

100 نقطة
- محمد أحمد -
سؤال ملحوظ
- h98 -
سؤال ذائع الصيت
- Zaid -
سيرة ذاتية
- 0xzidane -
100 نقطة
- 0xzidane -
...