firebase - 在 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()
我有两个问题:
- 因为当我记录
docSnap["myNumber"]
它时清楚地打印了一个 int,编译器怎么知道它应该是一个 long? - 有没有更简单的方法可以将“long-String”转换为 int?
解决方案
我最近在一个项目中遇到了通常是浮点数但也可能是整数的值的问题(对于我们在 I/O 上从零到应用程序的谈话),结果是:
val amount = documents.data["item_cost"]
if (amount != null && amount is Number) {
return String.format("%10.2f", amount.toDouble())
}
所以这里的关键是首先确保该值为 a Number
,以便您调用toDouble()
它。
推荐阅读
- sql - ORA-06502: PL/SQL: ora_sql_txt 的数字或值错误
- amazon-web-services - 放大后端配置设置 Cloudwatch 警报?
- html - Angular SharedModule 声明不起作用
- python - 如何在pygame中绘制圆圈倒计时?
- linux - c++ linux . 徐本图 21.04 gtk。为什么这个按钮“退出”现在起作用了?
- java - 为什么 JGroups 频道发送消息失败?
- php - 在 laravel 5.8 中发送时,有没有办法将邮件延迟几秒钟或几分钟?
- cucumber - 跳过测试的测试结果 - cucumber 和 webdriver io
- go - Golang -- 使用 heroku 部署应用程序崩溃 H10
- typescript - 如何记录泛型类型参数?