Сколько способов объявить поплавок в Rust? - PullRequest
0 голосов
/ 21 января 2020

Я видел следующие возможности:

let first_float: f64 = 3.4;
let second_float = 4.5f64;
let third_float = 5.6 as f64;

Есть ли другие способы объявить плавающее число? Я не имею в виду различные типы с плавающей точкой, такие как f32 и f64.

1 Ответ

9 голосов
/ 21 января 2020

Конечно, есть.

Сначала давайте объясним, что делают ваши пути. Они сочетают в себе различные функции языка, и, хотя все они, похоже, «объявляют плавающее число в Rust», они не являются простыми объявлениями. используйте большую часть времени:

let _another_one = 3.4;

И вот несколько других слишком сложных способов:

let _another_one = 17./5.; // good old math
let _another_one: f64 = From::from(3.4); // From::from identity conversion
let _another_one = f64::from(3.4); // Same as above, no inference
let _another_one = "3.4".parse::<f64>().unwrap(); // Why not parse them?
let _another_one = f64::from_bits(4614838538166547251); // When you really need your bits right
let _another_one = unsafe { std::mem::transmute::<_, f64>(4614838538166547251u64) }; // same as above, but only if you want to be naughty
let (_another_one,): (f64,) = (3.4,); // Deconstructing a one-tuple.

// Deserialize from JSON:
let _another_one: f64 = {
    use serde; // 1.0.104
    use serde_json; // 1.0.44
    serde_json::from_str("3.4").unwrap()
};

// This requires #![feature(type_ascription)] at the moment:
let _another_one = 3.4 : f64;
...