[英]How can I convert a f64 to f32 and get the closest approximation and the next greater or smaller value?
[英]How do I convert std::ffi::OsString to f64 or f32
我正在用一個函數獲取第二個參數,並希望將它從 std::ffi:OsString 轉換為浮點數或雙精度數。 我目前有以下代碼,但解析不起作用。
fn get_second_arg() -> Result<f64, Box<dyn Error>> {
match env::args_os().nth(2) {
None => Err(From::from("expected 2 arguments")),
Some(min_balance) => {
let min_balance_f64: f64 = min_balance.parse()?
Ok(min_balance_f64)
}
}
}
我收到錯誤:
no method named `parse` found for struct `std::ffi::OsString` in the current scope
std::ffi::OsString
有一個成員into_string
返回Result<String, OsString>
,您可以在其中提取Ok
變體並調用String::parse
。
為了完整起見,這是@Braddy Dean 回答的工作代碼:
fn get_second_arg() -> Result<f64, Box<dyn Error>> {
match env::args_os().nth(2) {
None => Err(From::from("expected 2 arguments")),
Some(min_balance) => {
let min_balance_option = min_balance.into_string().ok();
match min_balance_option {
None => Err(From::from("Unable to parse second argument")),
Some (value) => {
let min_balance_f64: f64 = value.parse()?;
Ok(min_balance_f64)
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.