Joe*_*ydt 2 floating-point casting type-conversion rust
在 Rust 中将 String 类型值解析为浮点类型值时,一切都可以正常工作"let pi: f64 = 3.14".parse().unwrap();。
然而,当解析来自标准输入的 String 类型值时,即使它是完全相同的值,程序也会出现恐慌并抛出:
线程“main”在“调用
Result::unwrap()一个Err值:ParseFloatError { kind:Invalid }”时惊慌失措,src/libcore/result.rs:999:5 注意:使用RUST_BACKTRACE=1环境变量运行以显示回溯。
我检查了值的类型,它是一个字符串,所以我不明白错误是什么,并且我无法找到与标准输入(stdin)和此问题相关的任何内容。还有其他人遇到过这个吗?有没有什么好的办法可以避免恐慌呢?
这是一些复制该问题的代码:
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)
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Jef*_*aar 10
根据 SCappella 的建议,需要删除新行。以下将起作用:
let user_input: f64 = s.trim().parse().unwrap();
Run Code Online (Sandbox Code Playgroud)