【问题标题】:Get a single float value from a string in elixir从 elixir 中的字符串中获取单个浮点值
【发布时间】:2016-12-04 22:48:03
【问题描述】:

是否有一种方法可以接收浮点字符串并将其转换为单个浮点数。它还必须处理没有. 的字符串,例如"1"

String.to_float 不处理 "1"

iex(5)> String.to_float("1")
** (ArgumentError) argument error
:erlang.binary_to_float("1")
iex(5)> String.to_float("1.0")
1.0

Float.parse 处理"1",但返回一个元组。

iex(4)> Float.parse("1")
{1.0, ""}

【问题讨论】:

  • 元组是这样它可以返回它解析的浮点数,以及它不知道如何处理的字符串的其余部分。这是解析器所期望的。只需使用元组中的第一个值。或者,如果您打算做很多事情并且不关心剩余字符串,请创建一个包装函数。

标签: elixir


【解决方案1】:

Convert Elixir string to integer or float

也许你应该使用类似的东西

{res, _} = Float.parse("1")

或

elem Float.parse("1"), 0

【讨论】:

  • 了解为什么可以在这里丢弃元组的第二个元素可能会有所帮助。
  • iex(1)> Float.parse("56.5xyz") {56.5, "xyz"}
  • 如果 float_as_string 预计不会有尾随休息,我更愿意使用 {res, ""} = Float.parse(float_as_string)。这样,如果不满足您的假设,代码会很快失败。
  • 你知道为什么String.to_float("1") 不起作用吗?
  • 根据文档,String.to_float:string 必须是浮点数的字符串表示形式(请记住,浮点数必须在小数点前后至少有一位)。如果要使用整数的字符串表示,则应使用Float.parse/1,否则将引发参数错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
相关资源
最近更新 更多