【发布时间】:2020-02-22 07:28:21
【问题描述】:
在 Rust 中将字符串类型值解析为浮点类型值时,使用 "let pi: f64 = 3.14".parse().unwrap(); 一切正常。
但是,当解析来自标准输入的 String 类型值时,即使它是完全相同的值,程序也会出现恐慌并抛出:
线程'main'在
Err上的'称为Result::unwrap()时惊慌失措 值:ParseFloatError {种类:无效}',src/libcore/result.rs:999:5 注意:使用RUST_BACKTRACE=1环境变量运行以显示 回溯。
我检查了值的类型,它是一个字符串,所以我不明白错误是关于什么的,我也找不到任何与标准输入相关的东西(标准输入)和这个问题。有没有其他人遇到过这个?有没有防止恐慌的好方法?
这里有一些复制问题的代码:
use std::io::{stdin,stdout,Write};
fn main() {
let mut s = String::new();
println!("Give a number ");
stdin().read_line(&mut s)
.expect("Did not enter a correct string");
let user_input: f64 = s.parse().unwrap();
println!("{:?}", user_input)
}
提前致谢!
【问题讨论】:
-
输入是否有尾随换行符?你可能需要去掉它。
-
"有没有防止恐慌的好方法?"不要调用会恐慌的方法?
unwrap()在实际程序中使用并不是一件好事。
标签: casting rust floating-point type-conversion