(C++) اعداد واقعی


اعداد واقعی

<پیش> float r = 5.0 مقدار 5.0 عددی است که به صورت کسری اعشاری نشان داده می شود (دارای یک عدد صحیح و یک قسمت کسری). در علم کامپیوتر به چنین اعدادی اعداد حقیقی می گویند.
 
عدد حقیقی عددی است که دارای یک جزء صحیح و یک جزء کسری باشد. اجزای اعداد صحیح و کسری با یک نقطه از یکدیگر جدا می شوند، نه با کاما مانند ریاضیات.

حتی اگر قسمت کسری عدد برابر با صفر باشد، مانند متغیر r در مثال، کامپایلر همچنان یک متغیر واقعی در حافظه ایجاد می کند. نکته، همانطور که بود، یک سیگنال برای مترجم است که لازم است یک متغیر واقعی ایجاد کند. 

اعداد بسیار بزرگ و بسیار کوچک  با استفاده از "میز شناور" نوشته می شوند. (به اصطلاح قالب علمی).  
در قالب علمی، یک عدد به صورت mantissa (بخش مهمی از عدد) و نمای نمایش داده می‌شود. هنگام نوشتن، مانتیس و توان با حرف e از یکدیگر جدا می شوند (تا حدی نشان دهنده 10 است). 
به عنوان مثال، می توانید مقدار بار یک الکترون را در یک متغیر ذخیره کنید 
\(1,60217662 \times 10^{-19}\) Kl)، به صورت   <پیش> floatEl= 1.60217662e-19 // برای ترتیب مثبت، علامت + را می توان حذف کرد
تقریباً تمام اعداد واقعی را نمی توان با دقت کامل در حافظه رایانه ذخیره کرد، زیرا تعداد محدودی بیت برای ذخیره سازی آنها اختصاص داده شده است. بنابراین، هنگام محاسبه با اعداد واقعی، خطاهای مرتبط با عدم دقت نمایش انباشته می شوند. علاوه بر این، هر چه فضای کمتری اختصاص داده شود، این خطا بیشتر خواهد بود. برای کاهش خطا در C++ از نوع double استفاده می شود که یک عدد واقعی را با دقت مضاعف در حافظه ذخیره می کند (هشت بایت در حافظه اشغال می کند، در حالی که نوع float - 4 بایت).

ورود

می توانید چندین متغیر واقعی را از جریان ورودی وارد کنید و آنها را به روش استاندارد روی متغیرها بنویسید: شناور x، y; cin>> x>> y; عدد اول به متغیر x و عدد دوم - به y می رود.



نتیجه گیری

هنگام نمایش اعداد واقعی، رقم های اعشاری 6 به طور پیش فرض نمایش داده می شوند و قالب علمی یا نقطه ثابت به طور خودکار انتخاب می شود.
فرمت خروجی را می توان سفارشی کرد. برای این کار، از یک کتابخانه اضافی iomanip استفاده می شود - دستکاری هایی که خروجی را کنترل می کنند.
برای خروجی در قالب نقطه ثابت، دستکاری کننده  ثابت، برای قالب علمی - علمی استفاده می شود. سپس باید تعداد ارقام را در قسمت کسری با استفاده از دستکاری‌کننده  setprecision() تعیین کنید. تعداد کل موقعیت های اختصاص داده شده برای خروجی عدد.

 
مثال
float x = 1.0/6; cout << ثابت << setprecision(9); // تنظیم کنید تا 9 رقم در قسمت کسری نمایش داده شود cout << setw(12) << ایکس؛
صفحه نمایش داده خواهد شد <پیش> _0.166666672
تمام دستورات را می توان در یک خط نوشت: <پیش> cout << ثابت << setprecision(9) << setw(12) << x;

عملیات با اعداد واقعی. ماژول cmath

هنگام کار با اعداد واقعی، می‌توانیم از ماژول آشنای math استفاده کنیم که حاوی تعداد زیادی توابع داخلی است. 
هنگام حل مسائل، اغلب لازم است اعداد واقعی را به نزدیکترین مقادیر صحیح گرد کنید. دو تابع برای این وجود دارد.

باید به خاطر بسپارید!
1. با تبدیل نوع صریح ( float x=1.5; int y = int(x))  -  قسمت کسری یک عدد واقعی قطع می شود (y = 1); 
2. تابع floor(x) -  بزرگترین عدد صحیح کمتر یا مساوی با x (گرد به پایین) را برمی گرداند.
3.  تابع ceil(x) -  کوچکترین عدد صحیح بزرگتر یا مساوی با x (گرد به بالا) را برمی گرداند.

در اینجا مفیدترین توابع موجود در ماژول cmath آمده است. <بدن>
تابع شرح
گرد
دور(x)
C++11
یک عدد را به نزدیکترین عدد صحیح گرد می کند. اگر قسمت کسری عدد 0.5 باشد، عدد به نزدیکترین عدد صحیح گرد می شود. 
trunc(x)
C++11
قسمت کسری را کنار می گذارد
طبقه(x) یک عدد را به پایین گرد می کند ("طبقه")، بنابراین طبقه(1.5) == 1، طبقه(-1.5) ==  ; -2
ceil(x) یک عدد را به بالا گرد می کند ("سقف")، در حالی که ceil(1.5) == 2، ceil(-1.5) ==  ; -1
abs(x) مدول (مقدار مطلق).
fabs(x) عدد واقعی ماژول
ریشه‌ها، لگاریتم‌ها
sqrt(x) ریشه مربع. استفاده: y = sqrt(x)
pow(x، y) x را به توان y افزایش می دهد. \(x^y\)
log(x) لگاریتم طبیعی. 
exp(x) پایه لگاریتم های طبیعی e = 2.71828...
مثلثات
sin(x) سینوس زاویه مشخص شده بر حسب رادیان
cos(x) کسینوس زاویه مشخص شده بر حسب رادیان
tan(x) مماس یک زاویه مشخص شده بر حسب رادیان
asin(x) آرکسین، مقدار را بر حسب رادیان برمی گرداند
acos(x) کسینوس قوس، مقدار را بر حسب رادیان برمی‌گرداند
atan(x) Arctangent، مقدار را بر حسب رادیان برمی گرداند
atan2(y, x) زاویه قطبی (بر حسب رادیان) نقطه (x، y).