Числа з плавачою комою належать до дійсних чисел: вони можуть мати дробову частину. У машині вони подаються як набір двійкових бітів згідно зі специфікацією IEEE-754. Числа з плаваючою комою часто називають просто «float».
Числа з плаваючою комою завжди знакові. Знаковість означає, що один із бітів числа відведено для позначення того, чи є це число відʼємним.
У чисел з плаваючою комою є бітова ширина, тобто просто кількість бітів, з яких складається число. Вона впливає на діапазон і точність значень, які може подати цей тип.
У Rust є два примітивні типи чисел з плаваючою комою: f32 і f64. Число після f вказує на бітову ширину. В інших мовах f32 іноді називають «одинарною точністю», а f64 іноді називають «подвійною точністю».
Загалом варто використовувати f64: на більшості сучасних споживчих пристроїв він такий самий швидкий, як f32, і значно зменшує ймовірність неточності чисел з плаваючою комою.
Якщо потрібні раціональні числа з нескінченною точністю, можна скористатися крейтом num-rational, який надає тип BigRational. Якщо потрібні десяткові числа з фіксованою точністю, можна скористатися крейтом rust_decimal, який надає тип Decimal.
У Rust немає неявних числових перетворень. Якщо потрібно привести одне число з плаваючою комою до іншого типу, є дві основні стратегії: ключове слово as, а також трейти From і TryFrom.
Використання ключового слова as просте: expr as Type. Однак із приведеннями через as повʼязано чимало застережень і тонкощів, про які слід памʼятати.
Приведення на основі трейтів трохи складніше, але безпечніше: трейти перетворення реалізовано лише там, де вони безпечні. Наприклад, f32 реалізує From<u8>, From<u16>, From<i8> і From<i16>: будь-яке значення, подаване будь-яким із цих типів, гарантовано можна подати і як f32. Це можна використати як f32::from(expr) або expr.into(), де expr належить до одного з цих типів.
Під час перетворення чисел з плаваючою комою приведення через as часто є кращим просто тому, що реалізацій приведення на основі трейтів порівняно мало. Станом на жовтень 2020 року TryFrom не реалізовано для чисел з плаваючою комою. Приведення з f32 до f64 через as відбувається без втрат. Зворотне приведення відбувається з втратами, але має визначений протокол приведення, покликаний звести втрати до мінімуму.