سلام دوستان. آیا این امکان وجود داره که اعداد رو در C++ روند کرد؟ مثلا:
0.3199998 ----> 0.32
219999 -------> 220000
سلام دوستان. آیا این امکان وجود داره که اعداد رو در C++ روند کرد؟ مثلا:
0.3199998 ----> 0.32
219999 -------> 220000
بله ، با استفاده از توابع کتابخانه ای ریاضی.
با استفاده از تابع ()ceil کوچترین عدد صحیح بزرگتر مساوی با یک عددرا که به عنوان آرگومان آن می باشد محاسبه می کند(گرد کردن به سمت پایین)
و با استفاده از تابع ()floor که عدد رو به عنوان آرگومان ورودی دریافت می کنه و به سمت بالا گرد می کنه.
در ضمن سر فایل توابع ریاضی رو هم باید در برنامه لحاظ کنی. <math.h>
با سلام
قبل از اینکه جوابت رو بدم این جمله ی معروف "قبل از ایجاد تاپیک جستجو کنید" رو به شما می گم. و بارها این سوالات در سالهای قبل جواب داده شده است. اما به خاطراینکه بی جواب نمونید...
اگه منظورت اینه که طول میدان را در خروجی تعیین کنیم به روش های زیر می تونی این کار رو بکنی:
برای تعیین طول کل میدان (اعم از صحیح و اعشاری):
cout.width(5);
cout << 0.3199998 << endl;
برای تعیین طول قسمت اعشار عدد:
cout.precision(2);
cout << 2234.3199998 << endl;
در این دستور قسمت اعشار تا دقت یک صدم گرد می شوند.
تذکر: گرد کردن فقط برای اعداد اعشاری و اون هم فقط قسمت اعشار جواب میده و برای گرد کردن اعداد صحیح باید خودتون کد بنویسید.
با عرض سلام خدمت اساتید محترم
در مورد گرد کردن اعشار میشه یک مثال بزنید و مثال رو دقیق توضیح بدید
من اصلا این رشته رو نخوندم و از این فرمولها سر در نمیارم
من برای نوشتن برنامه برای آی سی avr با زبان C++ احتیاج دارم که یک متغیر رو از نوع float با نام a در کدویژن معرفی کنم
این متغیر دقیقا ولتاژ ورودی به آی سی رو به مانشون میده که هم اعشار خیلی زیادی داره هم دائما در حال تغیره
حالا من میخوام بااستفاده از یک فرمول ریاضی یا تابع اعشارهای اضافی رو حذف کنم
برنامه من اینه
float a;
a=read_adc(0);
a=a*5/1023;
برای نمایش این عدد در ال سی دی از تابع sprintf استفاده کردم
ممنون و سپاسگذارم
سلام.
با کمک تابع floor و ceil که در math.h هست این تابع رو مینویسیم:
float RoundFlt(const float x, const int ex)
{
static const float pow_10_ex[] =
{
1.0f,
10.0f,
100.0f,
1000.0f,
10000.0f,
100000.0f,
1000000.0f
};
static const float inv_pow_10_ex[] =
{
1.0f,
0.1f,
0.01f,
0.001f,
0.0001f,
0.00001f,
0.000001f
};
int index = (ex > 6) ? 6 : ex;
float l_x = x * pow_10_ex[index];
return ((l_x < 0.0f) ? ceil(l_x - 0.5) : floor(l_x + 0.5f)) * inv_pow_10_ex[index];
};
مقدار ex ورودی تابع برای تعداد رقم های اعشار هست. متلا برای چهار رقم:
RoundFlt(a, 4);
البته این تابع برای مقادیری هست که توان ده بزرگ یا کوچیک نداشته باشن. مثلا عدد 1.9999e30 رو که در واقع 1999900000000000000000000000000 هست به 2.0e30 رند نمیکنه!