در Rust دو دستهی متفاوت از اعداد وجود دارد: اعداد صحیح (که میتوانند علامتدار یا بدون علامت باشند) و اعداد ممیز شناور.
نام یک نوع عددی از دو بخش تشکیل شده است:
ترکیبهای زیر ممکناند:
u8، i8
u16، i16
u32، i32، f32
u64، i64، f64
u128، i128
توجه کنید که برای اعداد ممیز شناور فقط گونههای ۳۲ بیتی و ۶۴ بیتی وجود دارد.
Rust هیچ تبدیل نوع ضمنی انجام نمیدهد.
یعنی اگر لازم باشد یک نوع عددی را به نوع دیگری تبدیل کنید، باید این کار را بهصورت صریح انجام دهید.
وقتی از یک نوع بزرگتر به نوع کوچکتر تبدیل میکنید (مثلاً از u64 به u32)، ممکن است داده از دست برود.
تبدیل از عدد ممیز شناور به عدد صحیح قطعاً تمام ارقام بعد از ممیز را از دست میدهد و در عمل به سمت پایین گرد میشود.
در این تمرین کدی مینویسید تا تولید یک خط مونتاژ در کارخانهی خودروسازی را تحلیل کنید. سرعت خط مونتاژ میتواند از 0 (خاموش) تا 10 (حداکثر) باشد.
در پایینترین سرعت آن (1)، هر ساعت 221 خودرو تولید میشود. میزان تولید با سرعت بهصورت خطی افزایش مییابد. بنابراین وقتی سرعت روی 4 تنظیم شود، باید هر ساعت 4 * 221 = 884 خودرو تولید کند. اما سرعتهای بالاتر احتمال تولید خودروهای معیوب را افزایش میدهند، خودروهایی که سپس باید دور انداخته شوند. جدول زیر نشان میدهد سرعت چگونه بر نرخ موفقیت تأثیر میگذارد:
1 تا 4: نرخ موفقیت ۱۰۰٪.5 تا 8: نرخ موفقیت ۹۰٪.9 و 10: نرخ موفقیت ۷۷٪.شما دو وظیفه دارید.
متدی پیادهسازی کنید که نرخ تولید خط مونتاژ در ساعت را با در نظر گرفتن نرخ موفقیت آن محاسبه کند:
assembly_line::production_rate_per_hour(6)
// Returns: 1193.4
توجه داشته باشید که مقدار برگشتی از نوع f64 است.
متدی پیادهسازی کنید که محاسبه کند در هر دقیقه چند خودروی سالم تولید میشود:
assembly_line::working_items_per_minute(6)
// Returns: 19
توجه داشته باشید که مقدار برگشتی از نوع u32 است.