از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
گرد کردن به دو مکان اعشاری در جاوا اسکریپت
سرفصلهای مطلب
معرفی
در این بایت در مورد گرد کردن اعداد، به طور خاص تا دو رقم اعشار صحبت خواهیم کرد. ما به چرایی و چگونگی انجام آن، همراه با برخی از ویژگیهای عجیب و غریب جاوا اسکریپت که آن را جالب میکند، خواهیم پرداخت.
گرد کردن در جاوا اسکریپت
جاوا اسکریپت مانند بسیاری از زبان های برنامه نویسی دیگر ابزارهایی را برای انجام عملیات ریاضی از جمله گرد کردن اعداد فراهم می کند. را Math.round()
تابع یک تابع جاوا اسکریپت داخلی است که یک عدد را به نزدیکترین عدد صحیح گرد می کند.
console.log(Math.round(3.5)); // Output: 4
console.log(Math.round(3.4)); // Output: 3
همانطور که می بینید، Math.round()
گرد کردن اعداد به نزدیکترین عدد صحیح را ساده می کند. اما اگر بخواهیم به تعداد معینی رقم اعشار، مثلاً دو، گرد کنیم، چه؟ اینجاست که همه چیز پیچیده تر می شود، اما فقط اندکی.
چرا گرد به دو مکان اعشاری
نیاز به گرد کردن اعداد به دو رقم اعشار در بسیاری از زمینه ها بسیار زیاد است. واضحترین مثال در امور مالی است، قیمتها اغلب به دو رقم اعشار گرد میشوند تا نمایانگر سنت در یک مقدار دلار باشد. در محاسبات علمی، گرد کردن به دو رقم اعشار ممکن است برای محدود کردن دقت محاسبات ضروری باشد.
چگونه به دو مکان اعشاری گرد کنیم
استفاده کردن Math.round()
برای گرد کردن دو رقم اعشار در جاوا اسکریپت، می توانید از ترکیب ضرب و اعشار استفاده کنید Math.round()
تابع. از آن زمان باید این کار را انجام دهیم Math.round()
فقط یک آرگومان می گیرد – شما نمی توانید مشخص کنید که کدام رقم اعشار را گرد کنید. در اینجا روش کار آن آمده است:
let num = 3.14159;
let roundedNum = Math.round(num * 100) / 100;
console.log(roundedNum); // Output: 3.14
در این کد، عدد را در 100 ضرب می کنیم تا نقطه اعشار را دو مکان به راست منتقل کنیم. سپس به نزدیکترین عدد صحیح گرد می کنیم و در نهایت بر 100 تقسیم می کنیم تا نقطه اعشار را به موقعیت اصلی خود برگردانیم. این باعث می شود که یک عدد به دو رقم اعشار گرد شود.
سر بالا! این روش برای اکثر اعداد به خوبی کار میکند، اما ممکن است نتایج غیرمنتظرهای را برای اعداد خاص بهدلیل روشی که جاوا اسکریپت با محاسبات ممیز شناور مدیریت میکند، به همراه داشته باشد.
استفاده از Number.toFixed()
راه دیگر برای گرد کردن دو رقم اعشار در جاوا اسکریپت استفاده از آن است Number.toFixed()
روش. این روش یک عدد را به یک رشته تبدیل می کند و به تعداد مشخصی اعشار گرد می کند.
let num = 3.14159;
let roundedNum = Number(num.toFixed(2));
console.log(roundedNum); // Output: 3.14
در این مثال، num.toFixed(2)
رشته را برمی گرداند "3.14"
، که سپس با استفاده از آن دوباره به عدد تبدیل می کنیم Number()
تابع.
را Number.toFixed()
روش از 0.5، بر خلاف Math.round()
، که به سمت نزدیکترین عدد زوج در a گرد می شود process تماس گرفت بانکداران گرد.
مقایسه کردن Math.round() و Number.toFixed()
بنابراین، چه زمانی باید استفاده کنید Math.round()
و چه زمانی باید استفاده کنید Number.toFixed()
? خب، بستگی دارد روی نیازهای خاص شما
Math.round()
وقتی با اعدادی سروکار دارید که ارقام اعشاری زیادی ندارند، عالی است. اما زمانی که شروع به کار با اعداد با ارقام اعشاری زیاد می کنید، به دلیل خصلت های محاسباتی ممیز شناور می تواند نتایج غیرمنتظره ای ایجاد کند. همچنین این ساده نیست که ابتدا رقم اعشار را جابجا کنید، عدد را گرد کنید و سپس آن را با تقسیم به عقب برگردانید.
از سوی دیگر، Number.toFixed()
کمی قابل پیش بینی تر است همیشه بدون در نظر گرفتن عددی که گرد می کنید، تعداد دقیق ارقام اعشاری را که مشخص کرده اید به شما می دهد. با این حال، از آنجایی که یک رشته را برمی گرداند، اگر می خواهید عملیات ریاضی بیشتری انجام دهید، باید آن را دوباره به عدد تبدیل کنید.
مسائل مربوط به دقت
حالا بیایید کمی در مورد مسائل دقیق صحبت کنیم. آیا تا به حال سعی کرده اید 0.1 و 0.2 را در جاوا اسکریپت اضافه کنید و نتیجه غیرمنتظره ای دریافت کنید؟ خب، شما با یکی از خصلت های محاسبات ممیز شناور مواجه شده اید.
این به این دلیل است که جاوا اسکریپت از اعداد ممیز شناور باینری استفاده می کند، که نمی توانند تمام کسری های اعشاری را به طور دقیق نشان دهند. این می تواند منجر به خطاهای گرد کردن شود.
console.log(0.1 + 0.2); // Outputs: 0.30000000000000004
این می تواند هنگام گرد کردن اعداد مشکلاتی ایجاد کند. را Math.round()
به ویژه این روش می تواند نتایج غیرمنتظره ای به شما بدهد. برای مثال، Math.round(1.005 * 100) / 100
1 می دهد، نه 1.01 همانطور که ممکن است انتظار داشته باشید.
بنابراین، هنگامی که اعداد را در جاوا اسکریپت گرد می کنید، همیشه ایده خوبی است که از این مسائل دقت آگاه باشید. ممکن است بخواهید از کتابخانه ای مانند استفاده کنید decimal.js اگر به محاسبات دقیق تری نیاز دارید.
گرد کردن به مکان های اعشاری دیگر
در حالی که گرد کردن به دو رقم اعشار احتمالاً رایج ترین مورد استفاده است، ممکن است مواردی وجود داشته باشد که شما نیاز به گرد کردن به تعداد اعشار متفاوت داشته باشید. پس چگونه این کار را انجام می دهید؟ پاسخ بسیار ساده است و شامل تغییرات جزئی در روش های قبلی ما است.
فرض کنید می خواهید به سه رقم اعشار گرد کنید. با Math.round()
روش، قبل از گرد کردن در 1000 (به جای 100) ضرب کنید و سپس بر 1000 تقسیم کنید:
let num = 123.45678;
let roundedNum = Math.round(num * 1000) / 1000;
console.log(roundedNum); // Outputs: 123.457
برای تعمیم این موضوع، ممکن است متوجه شده باشید که باید 10 را به توان “تعداد اعشار” برسانیم، به عنوان مثال:
let num = 123.45678;
let numDecimals = 3;
let decimalMover = Math.pow(10, numDecimals)
let roundedNum = Math.round(num * decimalMover) / decimalMover;
console.log(roundedNum); // Outputs: 123.457
با Number.toFixed()
روش، شما به سادگی 3 (به جای 2) را به عنوان آرگومان ارسال می کنید:
let num = 123.45678;
let roundedNum = Number(num.toFixed(3));
console.log(roundedNum); // Outputs: 123.457
همین منطق را می توان برای گرد کردن به هر تعداد رقم اعشار اعمال کرد. فقط 3 را با تعداد اعشار دلخواه خود جایگزین کنید.
نتیجه
در این بایت، روش گرد کردن به دو رقم اعشار را با استفاده از آن بررسی کردهایم Math.round()
و Number.toFixed()
و همچنین روش تنظیم این روش ها برای گرد کردن به هر تعداد رقم اعشار. ما نیز لمس کرده ایم روی برخی از مشکلات دقیقی که ممکن است با آنها روبرو شوید و روش رسیدگی به آنها.
این که آیا شما کار می کنید روی یک برنامه مالی که به محاسبات ارزی دقیق نیاز دارد، یا یک برنامه علمی که نیاز به نمایش نتایج با دقت خاصی دارد، درک این روش های گرد کردن می تواند فوق العاده مفید باشد.
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1403-01-31 15:11:06