Rust의 숫자는 크게 두 가지로 나뉘어요. 부호가 있을 수도, 없을 수도 있는 정수와 부동소수점 수예요.
숫자 타입의 이름은 두 부분으로 이루어져 있어요.
가능한 조합은 다음과 같아요.
u8, i8
u16, i16
u32, i32, f32
u64, i64, f64
u128, i128
부동소수점 수에는 32비트와 64비트 종류만 있다는 점에 주의해요.
Rust는 암시적 타입 변환을 하지 않아요.
즉, 어떤 숫자 타입을 다른 타입으로 바꾸려면 직접 명시적으로 변환해야 해요.
큰 타입에서 작은 타입으로 변환할 때(예를 들어 u64에서 u32로)는 데이터를 잃을 수 있어요.
부동소수점 수를 정수로 변환하면 소수점 뒤의 값은 반드시 잃게 되고, 사실상 내림이 돼요.
이 연습 문제에서는 자동차 공장 조립 라인의 생산량을 분석하는 코드를 작성해요. 조립 라인의 속도는 0(정지)부터 10(최대)까지 범위를 가질 수 있어요.
가장 낮은 속도(1)에서는 시간당 221대의 자동차가 생산돼요. 생산량은 속도에 비례해서 늘어나요. 따라서 속도를 4로 설정하면 시간당 4 * 221 = 884대를 생산해야 해요. 하지만 속도가 높아질수록 결함이 있는 자동차가 생산될 가능성도 커지고, 그런 자동차는 폐기해야 해요. 다음 표는 속도가 성공률에 어떤 영향을 주는지 보여줘요:
1에서 4: 성공률 100%.5에서 8: 성공률 90%.9와 10: 성공률 77%.두 가지 작업이 있어요.
성공률을 고려해서 조립 라인의 시간당 생산량을 계산하는 메서드를 구현해요:
assembly_line::production_rate_per_hour(6)
// Returns: 1193.4
반환되는 값은 f64 타입이라는 점에 주의해요.
분당 정상 자동차가 몇 대 생산되는지 계산하는 메서드를 구현해요:
assembly_line::working_items_per_minute(6)
// Returns: 19
반환되는 값은 u32 타입이라는 점에 주의해요.