这条线为何以及如何运作:
let guess: f64 = "42".parse().expect("Not a number!");
但这不是吗?
let guess: i32 = "42.0".parse().expect("Not a number!");
导致:
thread 'main' panicked at 'Not a number!: ParseIntError { kind: InvalidDigit }'
解析" float"的正确方法是什么? & str to integer?
更新
我发现这个有用:
let guess: i32 = "42.0".parse::<f64>().expect("Not a number!") as i32;
但是,我不了解它的工作原理以及它是否是正确的方法?
答案 0 :(得分:6)
您正在呼叫的内容实际上是let guess: i32 = "42.0".parse::<i32>();
。
但是,"42.0"
不是i32
的正确表示。
由于
parse
如此通用,因此可能会导致类型问题 推理。因此,parse
是您可以看到的少数几次之一 语法被亲切地称为&#39; turbofish&#39;:::<>
。这有助于 推理算法明确了解您尝试的类型 解析成。
您已经找到的正确解决方案确实提示解析器该字符串是浮点数的表示形式:
"42.0".parse::<f64>()