首页 > 解决方案 > Web Firestore - 将 Double 值保存到 Firebase

问题描述

我目前正在尝试将值保存在 Firebase 上(在云 Firestore 上)。

我的问题很简单:我想保存 Double 值,但是当一个数字像 113 而不是 145.3 时,该值会自动保存为 Long。

这是一个问题,因为我的 Android 应用程序因此崩溃,并且同时处理 Double 和 Long 值是一团糟。

我试过了:

parseFloat(15)

这不起作用,如果我做一个 console.log(value) 我得到 15(我猜不是 Double)。

我也试过:

var number = 15;
var doubleValue = number.toFixed(2);

这不起作用,值保存在字符串中。

在网络上处理这个问题似乎比在 iOS 或 Android 上要复杂得多。

标签: javascriptfirebasegoogle-cloud-firestoredouble

解决方案


根据Cloud Firestore 中有关数据类型的官方文档,有两种数字数据类型:

浮点数:64 位双精度,IEEE 754。

整数:64 位,有符号

以及您的问题的解决方案:

我的问题很简单:我想保存 Double 值,但是当一个数字像 113 而不是 145.3 时,例如,该值会自动保存在 Long 中。

如果你想保存113为双精度,那么保存它113.3 不仅仅是因为113Firestore 会看到这113是一个简单的类型Integer,它会相应地保存它。始终根据您需要的数据类型保存数据。

编辑:

无论您添加113还是113.0,该值都保存在数据库中为113. 如果你想得到它,113.0那么你必须得到它作为一个double. 在 Android 中,您可以使用以下代码行:

double doubleValue = document.getDouble("myDoubleProperty");

即使myDoubleProperty持有 的整数值113,也可以保存为双精度值。double 总是可以持有 Integer,而 Integer 永远不能在没有特定类型的情况下持有 double。


推荐阅读