【发布时间】:2021-02-18 07:00:54
【问题描述】:
如何通过 Objective-C SDK 在 Firestore 中存储数字的准确值?
例如,如果我手动创建一个值为“15.9”的“abv”字段,它会显示该精确值。
但是,如果我从 Objective-C API 更新 Firestore 中的值,并将 NSNumber 值 @(15.9),我会在我的 Firestore 文档中得到这个近似值。
NSDictionary *data = @{@"abv": @(15.9)};
[documentReference updateData:data completion:^(NSError * _Nullable error) {
}];
这是另一个例子。我试图从我的 Objective-C 应用程序中存储值 61.99。我可以从 Web 控制台手动将金额编辑回 61.99。我不明白为什么我可以从 Web 控制台手动输入精确的十进制值,但不能从 Objective-C API 手动输入。
【问题讨论】:
-
我认为您需要字符串,因为您似乎希望按原样保留用户输入。
-
当您从 Firestore 获取该字段并在 iOS 设备上的控制台中打印它时,它仍然打印
15.89999...还是打印正确的15.9? -
Firestore 将准确地反映您放入其中的内容。它不会以任何方式更改输入数据。您的应用可能会添加此特定值,即使它不是您在代码中表达的内容。
-
@DougStevenson Firestore 将准确返回放入其中的内容,但基于 Web 的管理员可能无法正确呈现 64 位整数(就像它显示在屏幕上一样),尽管它们正确存储在数据库中。这可能只是一个渲染问题。
-
感谢 cmets,但 Firestore 可以将
15.9完全存储为数字。我只是不知道如何从 Objective-C SDK 发送这个。如果我将它作为字符串发送,它将被存储为字符串,如果我将它作为数字发送,我会得到不精确。
标签: ios objective-c firebase google-cloud-firestore