"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنك تحويل العوامات بدقة إلى سلاسل بدقة عشرية محددة في لغة C++؟

كيف يمكنك تحويل العوامات بدقة إلى سلاسل بدقة عشرية محددة في لغة C++؟

تم النشر بتاريخ 2024-11-18
تصفح:716

How Do You Precisely Convert Floats to Strings with Specified Decimal Precision in C  ?

التحويل الدقيق للعوامات إلى سلاسل بدقة عشرية محددة

في لغة C، تحويل رقم الفاصلة العائمة إلى سلسلة بدقة محددة و الأرقام العشرية تتطلب دراسة متأنية. يستكشف هذا الدليل حلين شائعين: stringstream ووظيفة to_chars من C 17.

استخدام Stringstream

Stringstream هي أداة متعددة الاستخدامات لمعالجة السلاسل في لغة C. لتحويل تعويم إلى سلسلة بدقة محددة، يمكن تطبيق معالجات الدفق:

#include 
#include 

double pi = 3.14159265359;
std::stringstream stream;
stream 
  • std::fixed يضمن تمثيل الرقم بتدوين النقطة الثابتة، مع علامة عشرية وعدد محدد من الأرقام.
  • [ يتحكم &&&]std::setprecision(2) في عدد المنازل العشرية التي سيتم عرضها.

استخدام وظيفة to_chars (C 17 وما فوق)

لمزيد من الأغراض التقنية، مثل كتابة البيانات إلى XML أو JSON، توفر وظيفة to_chars المقدمة في C 17 حلاً موجزًا:

#include 
#include 

double pi = 3.14159265359;
std::array buffer;
auto [ptr, ec] = std::to_chars(buffer.data(), buffer.data()   buffer.size(), pi,
                               std::chars_format::fixed, 2);
if (ec == std::errc{}) {
    std::string s(buffer.data(), ptr);
}
else {
    // Error handling
}
    تأخذ الدالة std::to_chars مخزنًا مؤقتًا (في شكل std::array)، ورقمًا، ومواصفات تنسيق (في هذه الحالة، std::chars_format::fixed برقمين عشريين الأماكن).
  • إذا نجح التحويل، فسيتم إنشاء السلسلة الناتجة من المخزن المؤقت.
باستخدام هذه التقنيات، يمكنك تحويل الأعداد العشرية إلى سلاسل في لغة C مع التحكم الدقيق في عدد الأرقام العشرية، مما يضمن تمثيل بياناتك بدقة ووفقًا لمتطلباتك.

بيان الافراج أعيد طبع هذه المقالة على: 1729721222 في حالة وجود أي مخالفة، يرجى التواصل مع [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3