我想使用一个位移,但我需要结果作为一个F64。我似乎无法想象如何转变,并让结果作为f64而不会形成丑陋的tmp。在生锈我怎么能做这种类型转换在一行
let num_bits: uint = 32; // just for reference
// how can these two lines be 1 line
let muli: int = 1<<(num_bits-2);
let mul: f64 = muli as f64;
我怎么能写的最后两行中的一行,所以我不需要muli
?
我在主题尝试做了各种尝试:
let m: f64 = 1<<(num_bits-2) as f64;
这给playpen
<anon>:8:21: 8:40 error: mismatched types: expected `uint`, found `f64` (expected uint, found f64)
<anon>:8 let m: f64 = 1<<(num_bits-2) as f64;
谢谢你的回答。是否有'num_bits'的值,其中'1u'和'1i'会给出'm'的不同结果? – Victory 2014-11-01 23:50:09
如果它只是一个正在转移的'1',则不会。无论如何,如果这个问题是你的实际代码的一般形式,可能不会改变'1'。 – 2014-11-02 03:10:23
@Victory:要注意Rust,int和uint的位数因平台而异。如果你想要一个64位的整数,那么你应该使用'i64'或'u64'。 – 2014-11-03 07:47:48