جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات نقل قل ها
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.

×
×
مجله موفقیت عرشیانی ها رو بخون و نظربده تا تو هم برنده بشی لینک ثبت نام
×

دلیل درخواست بستن پست

کلیه پست هایی که جنبه تبلیغاتی داشته، محتوای اسپم و بی مفهوم در این دسته قرار میگیرند. همچنین پست هایی که به منظور گرفتن بک لینک درج می شوند شامل این مورد هستند.
حاوی مفاهیم غیر اخلاقی، سیاسی و یا توهین آمیز. کلیه پست هایی که از نظر محتوایی نیاز به بررسی و یا حذف شدن دارند در این دسته قرار می گیرند.
محتوایی با عدم جزئیات کافی و مورد نیاز. کلیه پست هایی که منظور نویسنده به وضوح مشخص نیست و نیازمند توضیحات و جزئیات بیشتر می باشند در این دسته قرار می گیرند.
محتوایی بی ربط با موضوعیت سرفصل کلی. کلیه پست هایی که از منظر مفهوم و مضمون ارتباطی با عنوان اصلی سوال ندارند در این دسته قرار می گیرند.
محتوایی دلخواه و بر پایه سلیقه. کلیه پست هایی که یک پاسخ مشخص ندارند و متوانند چندین پاسخ متفاوت و صحیح داشته باشند که کاملا مبتنی بر نظر شخصی افراد هستند در این دسته قرار می گیرند.
محتوایی در حوزه خیلی وسیع. کلیه پست هایی که از نظر محتوایی در یک حوزه ی وسیعی قرار دارند و مشخصا به یک موضوع خاصی اشاره ندارند که پاسخدهی به آن ها مستلزم تشریح مفاهیمی کلی می باشند در این دسته قرار می گیرند.
قبلا در لام تا کام مطرح شده. پست هایی که دقیقا با همین محتوا و مضمون قبلا در وب سایت لام تا کام درج شده اند، با ذکر آدرس منبع تکراری با پست حال حاضر شامل این دسته هستند. تکراری است با:
به سایر دلایل، نیازمند به بررسی توسط مدیر. به هر دلیل غیری که پست را نیازمند بررسی توسط مدیر کرده، با ذکر دلیل، در این دسته قرار میگیرد.
ارسال رای بستن

نوشتن اعداد بزرگ و کوچک در سی پلاس پلاس


0
0
2976

سلام به همه دوستان عزیز مشکلی که من دارم اینه که وقتی توی سی پلاس پلاس میخوام مثلا متغییری که مقدارش 999999999999999999 هست رو چاپ کنه ، اینکار رو نمیکنه و یه عدد که خیلی کوچک تر از این مقدار هست رو چاپ میکنه . چیکار کنم که دقیقا همین مقدار رو چاپ کنه؟


درواقع در سی پلاس پلاس یه محدودیت هست که اعداد بزرگتر از حدود دو میلیارد رو نمینویسه و بزرگترین عددش اونه ، چه جوری این مشکل رو رفع کنم؟

تکنولوژی کامپیوتر
ویرایش شده در 5 سال قبل امیرحمزه باقری
11.1k امتیاز
سوال شده در امیرحمزه باقری
441 امتیاز


هروقت سوال مرتبط با برنامه نویسی میپرسید، حتما باید کدتون رو ضمیمه سوالتون کنید. در غیر این صورت امکانش نیست پاسخ دقیقی به شما داده بشه. ــ سعید غلامی در 5 سال قبل

@سعید.غلامی این یه سواله عمومی هست نیاز به ضمیمه کد نداره ــ امیرحمزه باقری در 5 سال قبل

@سعید.غلامی یک مقدار توضیح اضافه کردم ببینید الان متوجه منظورم میشید ــ امیرحمزه باقری در 5 سال قبل

500 کاراکتر باقی مانده

2 جواب

0

کار سختی نیست اون عددی که تو محاسبه بکار بردی به احتمال زیاد از متغیر اینتیجر استفاده کردی و محدوده int حدودا از 32,000- تا 32,000+ هست که تو باید با unsigned long long int استفاده کنی

جواب داده شده در prog ing
1 امتیاز

500 کاراکتر باقی مانده


1

مشابه هر زبان دیگه ای، زبان C++ هم یک رنج داره برای اعدادش .. اگه متغییری که میسازی از جنس int باشه، رنجش هست –32,767 تا 32,767 که مدل unsignedش میشه از 0 تا 65,534‬. یعنی اگر عددی بزرگتر از این رنج بخوای برگردونی (یا چاپ کنی) براش قابل قبول نیست.

مثال زیر رو ببین :

#include <iostream>
#include <string>

int main()
{
  int numb = 999999999999999999;
  std::cout << numb << "\n";
}

// output: -1486618625

پس اگر میخوای مقدار 999999999999999999 رو چاپ کنی، نباید عدد در نظرش بگیری، باید یه رشته درنظرش بگیری که توی C آرایه هست. به این شکل :

#include <iostream>

char const*array();

int main()
{
    std::cout << array();
}
char const*array()
{
    return "999999999999999999";
}

// output: 999999999999999999

لیست رنج مقادیر در زبان C:

char / 1                  –127 to 127
int / 2                       –32,767 to 32,767
float / 4                 1E–37 to 1E+37 with six digits of precision
double / 8                1E–37 to 1E+37 with ten digits of precision
long double / 10              1E–37 to 1E+37 with ten digits of precision
long int / 4                  –2,147,483,647 to 2,147,483,647
short int / 2                 –32,767 to 32,767
unsigned short int / 2        0 to 65,535
signed short int / 2          –32,767 to 32,767
long long int / 8         –(2power(63) –1) to 2(power)63 –1
signed long int / 4       –2,147,483,647 to 2,147,483,647
unsigned long int / 4         0 to 4,294,967,295
unsigned long long int / 8    2(power)64 –1

ویرایش:

طبق پیام ها، برای استفاده از رنج عددی خیلی بالا با قابلیت محاسبه بر روی آن ها، پیشنهاد من استفاده از نوع double هست. به این شکل :

#include <stdio.h>
int main() {
  double num = 99999999999999999.0 * 9999999999999999999.0;
  printf("%f", num);
  return 0;
}

// output: 1000000000000000042420637374017961984.000000 
ویرایش شده در 5 سال قبل
جواب داده شده در سعید مرادی
1933 امتیاز


در روشی که گفتید امکان جمع و تفریق کردن عدد هست یا خیر؟ مثلا من میتونم اون 99999999999999 به دست اومده رو به اضافه 1 کنم؟چون وقتی به صورت رشته هست این امکان وجود نداره ــ امیرحمزه باقری در 5 سال قبل

@امیرحمزه.باقری میتونی تمام محاسباتت رو با همون فرمت عددی انجام بدی بعد موقع چاپ به رشته تبدیلش کنی. ولی اره، رشته رو نمیشه جمع یا تفریق کرد و کلا محاسبات ریاضی روش انجام داد. ــ سعید مرادی در 5 سال قبل

خب اول که میخوام توی فرمت عددی بزنم مشکل اینجاست که عدد 9999999999999999999999 رو نمیخونه ــ امیرحمزه باقری در 5 سال قبل

@امیرحمزه.باقری از فرمت double باید استفاده کنی. ــ سعید مرادی در 5 سال قبل

این متغییر هم باز محدودیت داره . من میخوام کلا محدودیت نباشه یه عدد ده هزار رقمی رو هم بزنه ــ امیرحمزه باقری در 5 سال قبل

در اون صورت خروجی یک همچین چیزی خواهد شد. @امیرحمزه.باقری ــ سعید مرادی در 5 سال قبل

یعنی متغیر دابل محدودیت نداره؟ ــ امیرحمزه باقری در 5 سال قبل

@امیرحمزه.باقری معلومه که بالاخره محدودیت داره .. هر چیزی محدودیت ناره .. توی این دنیا، هیچ چیز نامحدودی وجود نداره .. ولی به قدری رنج double وسیع هست که بعید میدونم توی استفاده و محاسباتت کم بیاری. ــ سعید مرادی در 5 سال قبل

فرض کنید یه عددی به بزرگی 999999999999999999999999 999999 در هر ثانیه در خودش ضرب بشه ، آیا استفاده از دابل میتونه رقم نهایی بعد از یک سال رو به من بده؟ ــ امیرحمزه باقری در 5 سال قبل

@امیرحمزه.باقری در این صورت باید از کتابخونه های C++ استفاده کنی. مثلا GMP که شعارش هست Arithmetic without limitations ــ سعید مرادی در 5 سال قبل

چه جوری باید از این کتابخونه استفاده کنم؟ ــ امیرحمزه باقری در 5 سال قبل

@امیرحمزه.باقری لینکشو برات گذاشتم دیگه .. باید دانلودش کنی، به پروژت اضافش کنی و طبق داکیومنتیشنی که داره ازش استفاده کنی. ــ سعید مرادی در 5 سال قبل

متاسفانه نتونستم نحوه کار باهاش رو متوجه بشم ، بازم ممنون ــ امیرحمزه باقری در 5 سال قبل

@امیرحمزه.باقری خواهش میکنم. اینجا هم یه سری مثال هست و کامل توضیح داده که چطور باید از اون کتابخونه استفاده کنی. مطالعش کنی متوجه میشی. ــ سعید مرادی در 5 سال قبل

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


وب سایت لام تا کام جهت نمایش استاندارد و کاربردی در تمامی نمایشگر ها بهینه شده است.

تبلیغات توضیحی


عرشیان از کجا شروع کنم ؟
تغییر و تحول با استاد سید محمد عرشیانفر

تبلیغات تصویری


کپی