首页 > 解决方案 > 在 Kotlin 中将长字符串转换为 Int

问题描述

Firestore 将值保留为双精度值。没问题,我将一个 Int 存储到 Firestore 中,然后我尝试将它作为 Int 读回,如下所示:

docSnap["myNumber"] as Int

当我这样做时,我得到了例外

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer

所以我必须做

(docSnap["myNumber"] as Long).toInt()

我有两个问题:

  1. 因为当我记录docSnap["myNumber"]它时清楚地打印了一个 int,编译器怎么知道它应该是一个 long?
  2. 有没有更简单的方法可以将“long-String”转换为 int?

标签: firebasekotlincastinggoogle-cloud-firestore

解决方案


我最近在一个项目中遇到了通常是浮点数但也可能是整数的值的问题(对于我们在 I/O 上从零到应用程序的谈话),结果是:

val amount = documents.data["item_cost"]
if (amount != null && amount is Number) {
    return String.format("%10.2f", amount.toDouble())
}

所以这里的关键是首先确保该值为 a Number,以便您调用toDouble()它。


推荐阅读