【问题标题】:Convert String which is "float" to Integer将“浮点”字符串转换为整数
【发布时间】:2019-07-04 06:27:52
【问题描述】:

如何将kotlin中包含浮点表示的字符串值转换为整数?

我尝试使用.toFloat() 将字符串转换为浮点数,然后使用toInt() 将其转换为整数,它可以完美运行。 但是如何将这样的字符串直接转换为整数呢?

val strDemo = "42.22"
val intDemo = strDemo.toInt()

上面的sn-p 会抛出NumberFormatException,因为它不是整数的正确数字表示。

但是,当我尝试时

val strDemo = "42.22"
val intDemo = strDemo.toFloat().toInt()

它毫无例外地转换数据,因为字符串首先转换为浮点数。并且浮点值有正确的数字表示。

现在如何绕过toFloat()方法,直接将strDemo转换为Integer

【问题讨论】:

  • 你不能因为42.22不是整数。必须以这种方式完成.. 最简单的strDemo.toFloat().toInt().. 要么你得到第一个子字符串,这也很忙......见stackoverflow.com/questions/1450991/…
  • 您可以删除“.”之后的值然后尝试将其解析为 int
  • 这是我在发布这个问题之前的想法,但我认为有一种方法可以直接将表示浮点数的字符串转换为整数。感谢您的评论@ADM

标签: kotlin


【解决方案1】:

没有将十进制/浮点字符串数字直接转换为整数的魔术函数。必须这样做。即使你找到了,我确信toFloat().toInt() 过程仍然会在该函数上发生。

因此,您可以做的解决方案是像这样创建String 的扩展:

StringExt.kt

fun String.floatToInt(): Int {
    return this.toFloat().toInt()
}

你可以这样使用它:

val strDemo = "42.22"
val intDemo = strDemo.floatToInt()

【讨论】:

  • 是的,我总是可以创建一个扩展方法来进行浮点到整数的转换,但这将是多余的,因为我已经有一种方法可以使用.toFloat().toInt() 来完成它。感谢您的回答和提示。
猜你喜欢
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 2014-04-29
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
相关资源
最近更新 更多