Avatar ·

التقريب إلى منزلتين عشريتين في JavaScript: الحل الصحيح

مرحبًا بالجميع! واجهت مهمة تبدو بسيطة: أحتاج إلى تقريب الأرقام إلى منزلتين عشريتين، ولكن فقط إذا كان ذلك ضروريًا. أي إذا كان الرقم 10.5 — يُترك كما هو، وإذا كان 10.456 — يُقرب إلى 10.46. المشكلة هي أن الطرق القياسية في JavaScript تتصرف بشكل غريب. على سبيل المثال، `toFixed(2)` تُرجع سلسلة نصية وليس رقمًا، وقد تعطي نتائج غير متوقعة بسبب أخطاء الأعداد ذات الفاصلة العائمة. ```javascript // مشكلة مع toFixed console.log(1.005.toFixed(2)); // يطبع "1.00" بدلاً من المتوقع "1.01" console.log(0.1 + 0.2); // 0.30000000000000004 ``` جربت استخدام `Math.round(num * 100) / 100`، لكن هذا أيضًا يعطي أخطاء: ```javascript // مشكلة مع Math.round console.log(Math.round(1.005 * 100) / 100); // 1 بدلاً من 1.01 console.log(Math.round(1.255 * 100) / 100); // 1.25 بدلاً من 1.26 ``` أرجو إرشادي إلى الطريقة الصحيحة والموثوقة لتقريب الأرقام إلى منزلتين عشريتين مع مراعاة جميع خصائص JavaScript؟ أحتاج إلى أن تكون النتيجة