gpt4 book ai didi

rust - 为什么 .parse() 将 "42"转换为 f64 但无法将 "42.0"转换为 i32?

转载 作者:行者123 更新时间:2023-11-29 07:53:09 27 4
gpt4 key购买 nike

这条线为什么以及如何工作:

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 解析为整数的正确方法是什么?

更新:

我发现这个有用:

let guess: i32 = "42.0".parse::<f64>().expect("Not a number!") as i32;

但是我不明白它的工作原理以及它是否是正确的方法?

最佳答案

你调用的实际上是let guess: i32 = "42.0".parse::<i32>(); .

然而,"42.0"不是 i32 的正确表示.

根据documentation :

Because parse is so general, it can cause problems with type inference. As such, parse is one of the few times you'll see the syntax affectionately known as the 'turbofish': ::<>. This helps the inference algorithm understand specifically which type you're trying to parse into.

您已经找到的正确解决方案确实是向解析器提示该字符串是 float 的表示形式:

"42.0".parse::<f64>()

关于rust - 为什么 .parse() 将 "42"转换为 f64 但无法将 "42.0"转换为 i32?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47178016/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com