【问题标题】:How to get strings parsed to floats with comma as decimal separator如何使用逗号作为小数分隔符将字符串解析为浮点数
【发布时间】:2019-12-30 00:52:53
【问题描述】:

我正在尝试使用 parse() 函数解析字符串,该函数本质上是 f32 的用户输入。可以输入带有逗号作为小数分隔符的浮点数 - 如何将其解析为 f32?

到目前为止,只要输入格式为“30”或“30.1”,将字符串解析为浮点数就可以正常工作 - 只要输入为“30,1”,我就会在 Result::unwrap( )。 有没有办法让解析接受“,”作为小数分隔符?

这是我目前使用的代码:

input.trim().parse().unwrap();

我希望解析采用“30”和“30,1” - 最好遵守本地十进制约定

【问题讨论】:

  • 1000 上的逗号有哪些规则?
  • 因为如果您只期望 单个 逗号或句号,您可以使用 stackoverflow.com/a/34606128/5986907 查找逗号并将其替换为句号,然后解析为 float
  • @SOFe 他很可能不在乎,因为他的语言环境不使用 . 作为小数分隔符。
  • @Luckystrik3 标准库在设计上不支持区域设置。你应该选择一个本地化包。
  • 复制字符串并将,替换为.。照常进行。

标签: string rust floating-point type-conversion


【解决方案1】:

也许您可以在将逗号传递给解析之前将逗号替换为点。

fn main() {
    let input = "30,6";
    let val: f32 = input.trim().replace(',', ".").parse().unwrap();

    dbg!(val);
}

对我来说很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多