Firestore增量浮点问题

2023-12-13

请注意,我知道关于这个问题还有一些其他问题,但没有真正的答案。

因此,自从实现增量字段值以来发生的情况是,当增加浮点数时,大多数时候您会得到十几个小数而不是实际数字。

// incrementing 0, with 0.1, 11 times, returns 1.0999999999999999
Math.round( 1.0999999999999999 * 100 + Number.EPSILON ) / 100 

这会返回正确的数字...所以我想知道,这不能在处理增加 Firestore 内实际值的方法内部实现吗?

问题是,当我想显示基于区域设置的数字时,我使用以下命令:

number.toLocaleString( undefined, { minimumFractionDigits: 2 })

那会显示1.09这是错误的,客户会对他们的收入感到困惑。

客户端收到数据后,除了操作数据外,还需要做什么?

这样做的另一个副作用是,当使用增加一个大的负值时,有时,由于某种原因,你会得到+e在 Firestore 中的值内,当在服务器端获取它时(至少使用 PHP Admin SDK ),该数字最终作为字符串而不是整数。


根据文档, Cloud Firestore 将浮点数存储在IEEE 754格式。请花一些时间来理解这种格式的含义。基本上,您不能指望浮点数能够准确保留您指定的精度,因为格式对于某些数字不可能做到这一点。存储号码时,您可能会遇到一些小的变化。 Stack Overflow 上已经可以找到此类行为的详细总结:

  • 为什么浮点数不准确?

如果您必须保持数字精度,请考虑使用一个库来帮助加载和存储具有您所需精度的数字。几乎所有金融应用程序都会执行类似的操作,因为 IEEE 754 可以有效地丢失数据,以便将数据压缩到较小的尺寸。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firestore增量浮点问题 的相关文章

随机推荐

  • OS X Lion 上的 68k 汇编器

    我需要为我的大学课程使用 68k 的汇编程序进行一些编程 我正在寻找一个程序来在 os x lion 上执行此操作 我发现 easy68k 正在 wine 中运行 但我感觉它运行不正常 有什么猜测吗 Vasm是一个可以针对 68k 构建并在
  • python pandas 动态读取csv文件

    我想在 for 循环中迭代地从一组 csv 文件中读取数据 csv 文件命名为 1 csv 2 csv等等 读取数据的正常方法是 data pd read csv 1 csv 请有人建议如何更换1 by i当使用一个for loop I t
  • 用于确定操作系统类型的环境变量(Windows XP、Windows 7)

    我想在 XML 文件中区分 Windows XP 和 Windows 7 我想我会在 XML 中使用环境变量 但是我找不到 Windows 中定义的任何提供此信息的系统环境变量 我看到 OSTYPE 变量 但它仅在 Windows 7 中可
  • 使用 Ajax 调用的结果更新 div

    我想显示下面的 ajax 函数对 dom 中的 div 的响应 更新 div 在不使用重型插件的情况下如何做到这一点 url http dowmian com xs1 getcam php type GET data id success
  • 如何控制IE中onbeforeunload的动作?

    我有一个问题onbeforeunload最近 当用户尝试关闭 IE 浏览器时 我需要弹出一个投票页面 我通过使用以下方法做到了 以及主要结构makevote 在javascript中如下 function makevote comet di
  • 包含点 (0,0) 的三角形数量

    首先 归功于 Topcoder 因为这个问题被用在他们的一个 SRM 中 但他们没有对此进行编辑 在这个问题中 我得到了 n 个点 其中 n 介于 1 到 1000 之间 对于每三个点 显然有一个三角形将它们连接起来 问题是 这些三角形中有
  • 当用户在 Excel 中向右滚动时移动形状(VBA)

    I have an excel workbook with two shapes on Sheet1 like below 我的要求是当用户向工作表右侧导航时 即向 headers24 header25 等导航时 我希望工作表上的两个形状随
  • 为什么空引用打印为“null”

    在 println 中 这里 o toString 抛出 NPE 但 o1 不会 为什么 public class RefTest public static void main String args Object o null Obje
  • Getter 和 Setter 不工作?

    我现在有两个类 RemindersDAO java 和 ViewLocalReminders java 我正在尝试访问 ViewLocalReminders java 中的变量 并尝试从 RemindersDAO java 中调用它 我通过
  • RWD:在移动设备中显示桌面版本,缩小,无水平滚动

    也许我的问题有点奇怪 但我的客户希望在一段时间内从网站上删除响应能力 并在移动设备中查看桌面版本 首先 我删除了响应式元标记 但在页面中获得水平滚动 我想要的是在 iPhone 上看到我的网站 就像在桌面上看到的一样 没有任何滚动或缩放 我
  • 我是否应该将 IBActions 放入头文件中?

    鉴于 Xcode 4 6 3 使用 iOS SDK 6 1 声明方法签名是否有区别IBAction是否在头文件中 如果不将方法声明放在头文件中 应用程序仍然能够毫无问题地编译和运行 然而 该方法在故事板中看不到 未在头文件中声明方法是否存在
  • 在VB.NET中使用RSA加密进行解密

    我使用以下命令在 Linux 计算机的 cmd 行中使用 openssl 创建了公钥和私钥 openssl genrsa out rsa 1024 priv pem 1024 openssl rsa pubout in rsa 1024 p
  • 访问名称来自用户输入的局部变量

    我需要使用访问字符串raw input list1 one Two three list2 1 2 3 while True ip raw input enter list for i in ip print i break 当 list1
  • UWP - 防止 NavigationViewItemHeader 被剪切

    I am writing a UWP app that has a NavigationView containing NavigationViewItemHeaders
  • 再次 setTimeout 与 setInterval

    所以我知道之间存在差异setTimeout and setInterval 但请考虑这两个代码示例 function myFunction setTimeout myFunction 100 doSomething setTimeout m
  • 模块解析失败:意外的令牌 ionic 3

    升级到最新的 ionic 和 ionic Angular 模块后 出现此错误 这是升级后我的 Package json 文件 这是升级后我的 Package json 文件 运行时错误 Module parse failed Unexpec
  • 删除行的有效方法(多个条件)VBA

    我有一张表 其中 Col A 中有一个字符串 A Col B 由字符串 B 组成 我想在 A 列中保留带有 Begr ndung 一词的行 在 B 列中保留带有 Nein 一词的行 我正在使用从这些来源找到的以下代码如果单元格不包含 则删除
  • 在后台运行 R

    嗨 这是一个我不知道如何提出的问题 我正在从远程服务器运行 R 我对远程服务器的访问是通过 ssh username 等 访问后 我会看到一个命令提示符 我可以调用 R 并且我很乐意在 R 上工作 问题1 我有一个大型网络 100k 个节点
  • 如何从 stdlib 编写 qsort 的比较函数?

    我有一个结构 struct pkt double x double y double alfa double r kw typedef struct pkt pkt 这些结构的表格 pkt tab pkt tab pkt malloc il
  • Firestore增量浮点问题

    请注意 我知道关于这个问题还有一些其他问题 但没有真正的答案 因此 自从实现增量字段值以来发生的情况是 当增加浮点数时 大多数时候您会得到十几个小数而不是实际数字 incrementing 0 with 0 1 11 times retur