该行的原因和方式如何:
let guess: f64 = "42".parse().expect("Not a number!");
Run Code Online (Sandbox Code Playgroud)
但这不是吗?
let guess: i32 = "42.0".parse().expect("Not a number!");
Run Code Online (Sandbox Code Playgroud)
导致:
thread 'main' panicked at 'Not a number!: ParseIntError { kind: InvalidDigit }'
Run Code Online (Sandbox Code Playgroud)
将"float"和str解析为整数的正确方法是什么?
更新:
我发现这个工作:
let guess: i32 = "42.0".parse::<f64>().expect("Not a number!") as i32;
Run Code Online (Sandbox Code Playgroud)
但是我不明白它是如何工作的机制以及它是否是正确的方法呢?
你究竟在呼唤什么let guess: i32 = "42.0".parse::<i32>();.
但是,"42.0"不是一个正确的表示i32.
根据文件:
因为它
parse是如此通用,它可能导致类型推断的问题.因此,parse是几次你会看到亲切地称为"turbofish"语法之一:::<>.这有助于推理算法明确了解您尝试解析的类型.
您已经找到的正确解决方案确实是在解析器中提示字符串是float的表示形式:
"42.0".parse::<f64>()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |