Ali Ali38 نشر 5 سبتمبر 2022 أرسل تقرير نشر 5 سبتمبر 2022 السلام عليكم، كنت أقوم بكتابة تابع لحساب مساحة دائرة و لكن الخرج في بعض الأحيان يكون عبارة عن كثير من الأرقام بعد الفاصلة. كما أنه أحيانا يظهر بالشكل العلمي، لكنني أريده أن يظهر مع رقمين بعد الفاصلة فقط فكيف يمكنني القيام بذلك؟ هذا هو الكود الذي قمت بكتابته: #include<iostream> using namespace std; const double PI = 3.14; double circle_area(double r){ return r * r * PI; } int main(){ double r; cin >> r; cout << circle_area(r) << '\n'; return 0; } اقتباس
1 Kais Hasan نشر 5 سبتمبر 2022 أرسل تقرير نشر 5 سبتمبر 2022 (معدل) يمكن القيام بذلك باستعمال setprecision و التي تقوم بتحديد عدد الأرقام بعد الفاصلة. يوجد هذا التابع في المكتبة iomanip و التي تحوي على الكثير من التوابع الخاصة بالتلاعب بالدخل و الخرج من ناحية التمثيل، من الجيد الإطلاع عليها لمعلومات إضافية. يمكن القيام بما سبق بالشكل التالي: #include<iostream> #include<iomanip> using namespace std; const double PI = 3.14; double circle_area(double r){ return r * r * PI; } int main(){ double r; cin >> r; cout << setprecision(2) << fixed << circle_area(r) << '\n'; return 0; } حيث هنا fixed تقوم بطباعة رقمين دائماً حتى لو كان يكفي رقم واحد بعد الفاصلة، في حال كنت لا تريد ذلك يمكنك إزالتها فقط. تم التعديل في 5 سبتمبر 2022 بواسطة Kais Hasan 1 اقتباس
1 Ahmed Sadek Elamine Touahria نشر 6 سبتمبر 2022 أرسل تقرير نشر 6 سبتمبر 2022 هناك طرق عديدة لتحديد عدد الأرقام بعد الفاصلة في لغة c++ : باستعمال دالة ()round : هناك العديد من الخيارات لتقييد النقطة العائمة بمنزلتين عشريتين ، اعتمادًا على ما إذا كنت ترغب في تقريب الرقم إلى أقرب ، أو تقريبه لأسفل ، أو تقريبه لأعلى. على سبيل المثال ، يقوم الكود التالي بتقريب الفاصلة إلى منزلتين عشريتين. #include <iostream> #include <cmath> int main() { float f = 10.517986; float value = round(f * 100) / 100; std::cout << value << std::endl; // 10.52 return 0; } لتقريب رقم من نوع double إلى منزلتين عشريتين ، يمكنك استخدام دالة std :: ceil على النحو التالي: #include <iostream> #include <cmath> int main() { float f = 10.517986; float value = floor(f * 100) / 100; std::cout << value << std::endl; // 10.51 return 0; } باستعمال دالة std::ios_base::precision لتعيين المنزلة العشرية لقيمة الفاصلة floating-point. يمكنك استخدام std :: ostringstream مع محدد الدقة مثل std :: cout. #include <iostream> #include <sstream> // كتابة دالة لتسهيل عملية التحديد std::string format(float f, int digits) { // نستعمل الدالة ostringstream std::ostringstream ss; ss.precision(digits); ss << f; return ss.str(); } int main() { float f = 10.517986; int digits = 4; //نستدعي الدالة std::string value = format(f, digits); std::cout << value << std::endl; // 10.52 return 0; } اقتباس
0 Ayoub Souad نشر 5 سبتمبر 2022 أرسل تقرير نشر 5 سبتمبر 2022 بإمكانك استخدام وظيفة ceil من مكتبة cmath كعائد بداخل الدالة التي عرفتها: double circle_area(double r){ double c= r * r * PI; return std::ceil(c * 100.0) / 100.0; } و لاتنسى تضمين المكتبة cmath في الكود: #include <cmath> تجد هنا مميزات هذه الوظيفة التقريبية اقتباس
السؤال
Ali Ali38
السلام عليكم، كنت أقوم بكتابة تابع لحساب مساحة دائرة و لكن الخرج في بعض الأحيان يكون عبارة عن كثير من الأرقام بعد الفاصلة.
كما أنه أحيانا يظهر بالشكل العلمي، لكنني أريده أن يظهر مع رقمين بعد الفاصلة فقط فكيف يمكنني القيام بذلك؟
هذا هو الكود الذي قمت بكتابته:
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.