
اعداد در زبان متلب
زبان متلب انواع مختلفی از نوع داده عددی را پشتیبانی می کند می توان آن ها را به دو دسته صحیح و اعشاری تقسیم کرد. اعداد صحیح خود به دو دسته علامت دار (Signed) و بدون علامت (Unsigned) تقسیم می شوند. اعداد اعشاری هم به دو دسته Single و Double تقسیم می شوند. به صورت پیشفرض متلب تمام مقادیر عددی را به صورت اعشاری و با دقت double ذخیره می کند. تمام داده های عددی از عملیات های پایه ریاضی و آرایه ها پشتیبانی می کنند.
تبدیل به نوع داده عددی
زبان برنامه نویسی متلب برای تبدیل نوع داده های عددی به یک دیگر توابع زیر را ارائه می کند.
| تابع | توضیح |
| double | تبدیل به عدد اعشاری با دقت double |
| single | تبدیل به عدد اعشاری با دقت single |
| int8 | تبدیل به عدد صحیح علامت دار 8 بیتی |
| int16 | تبدیل به عدد صحیح علامت دار 16 بیتی |
| int32 | تبدیل به عدد صحیح علامت دار 32 بیتی |
| int64 | تبدیل به عدد صحیح علامت دار 64 بیتی |
| uint8 | تبدیل به عدد صحیح بدون علامت 8 بیتی |
| uint16 | تبدیل به عدد صحیح بدون علامت 16 بیتی |
| uint32 | تبدیل به عدد صحیح بدون علامت 32 بیتی |
| uint64 | تبدیل به عدد صحیح بدون علامت 64 بیتی |
مثال:
یک فایل اسکریپتی ایجاد کرده و کد زیر را در آن بنویسید:
1 2 3 4 5 6 | x = single([5.32 3.47 6.28]) .* 7.5 x = double([5.32 3.47 6.28]) .* 7.5 x = int8([5.32 3.47 6.28]) .* 7.5 x = int16([5.32 3.47 6.28]) .* 7.5 x = int32([5.32 3.47 6.28]) .* 7.5 x = int64([5.32 3.47 6.28]) .* 7.5 |
خروجی:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | x = 39.900 26.025 47.100 x = 39.900 26.025 47.100 x = 38 23 45 x = 38 23 45 x = 38 23 45 x = 38 23 45 |
مثال:
یک فایل اسکریپتی ایجاد کرده و کد زیر را در آن بنویسید:
1 2 3 | x = int32([5.32 3.47 6.28]) .* 7.5 x = int64([5.32 3.47 6.28]) .* 7.5 x = num2cell(x) |
خروجی:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | x = 38 23 45 x = 38 23 45 x = { [1,1] = 38 [1,2] = 23 [1,3] = 45 } |
کوچکترین و بزرگترین عدد صحیح
توابع intmax() و intmin() بزرگترین و کوچکترین مقداری که یک نوع عددی می تواند نگه دارد را باز میگردانند. هر دو این توابع نوع داده عددی را به عنوان آرگومان می گیرند. برای درک بهتر به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | % displaying the smallest and largest signed integer data str = 'The range for int8 is:nt%d to %d '; sprintf(str, intmin('int8'), intmax('int8')) str = 'The range for int16 is:nt%d to %d '; sprintf(str, intmin('int16'), intmax('int16')) str = 'The range for int32 is:nt%d to %d '; sprintf(str, intmin('int32'), intmax('int32')) str = 'The range for int64 is:nt%d to %d '; sprintf(str, intmin('int64'), intmax('int64')) % displaying the smallest and largest unsigned integer data str = 'The range for uint8 is:nt%d to %d '; sprintf(str, intmin('uint8'), intmax('uint8')) str = 'The range for uint16 is:nt%d to %d '; sprintf(str, intmin('uint16'), intmax('uint16')) str = 'The range for uint32 is:nt%d to %d '; sprintf(str, intmin('uint32'), intmax('uint32')) str = 'The range for uint64 is:nt%d to %d '; sprintf(str, intmin('uint64'), intmax('uint64')) |
خروجی:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ans = The range for int8 is: -128 to 127 ans = The range for int16 is: -32768 to 32767 ans = The range for int32 is: -2147483648 to 2147483647 ans = The range for int64 is: 0 to 0 ans = The range for uint8 is: 0 to 255 ans = The range for uint16 is: 0 to 65535 ans = The range for uint32 is: 0 to -1 ans = The range for uint64 is: 0 to 18446744073709551616 |
همچنین توابع realmax() و realmin() برای هدف مشابه اما برای اعداد اعشاری استفاده می شوند. مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | % displaying the smallest and largest single-precision % floating point number str = 'The range for single is:nt%g to %g andnt %g to %g'; sprintf(str, -realmax('single'), -realmin('single'), ... realmin('single'), realmax('single')) % displaying the smallest and largest double-precision % floating point number str = 'The range for double is:nt%g to %g andnt %g to %g'; sprintf(str, -realmax('double'), -realmin('double'), ... realmin('double'), realmax('double')) |
خروجی:
1 2 3 4 5 6 | ans = The range for single is: -3.40282e+38 to -1.17549e-38 and 1.17549e-38 to 3.40282e+38 ans = The range for double is: -1.79769e+308 to -2.22507e-308 and 2.22507e-308 to 1.79769e+308 |



























هیچ نظری ثبت نشده است