【问题标题】:Postgres decimal precision VS ExcelPostgres十进制精度VS Excel
【发布时间】:2014-03-18 23:50:19
【问题描述】:

我正在寻找有关 Postgres 和 Excel 中小数精度的任何文档。

我有一个通过 excel 导入的数据库。我发现 excel 中的 SUM() 结果与 Postgres 中的 SUM() 方法略有不同(通常在小数点后第 3 位或第 4 位,具体取决于我从数据中包含或排除的内容。我很想知道这是否是由于浮点精度问题,或者导入可能会导致一些小的差异。

【问题讨论】:

  • 1。您希望在这里取得什么成就? 2。这是两个非常不同的技术平台,例如Excel 用于相当/相对简单 计算,而另一个是数据库,是一个完美的容器,可以将任何类型保持在最佳状态(考虑到容器的 DNA 有多完美)
  • 简单到可以在 Excel 中找到:en.wikipedia.org/wiki/Numeric_precision_in_Microsoft_Excel
  • 我需要回答为什么它们不同。客户期望 100% 匹配,但事实并非如此。 xlxs 文件用于创建数据库,因此我希望它们也相同
  • 如果您需要回答为什么某些特定案例显示出差异,那么您需要提供有关案例的详细信息。
  • 如果您展示数据、查询和不同的结果,而不是仅仅笼统地描述它们,将会很有帮助。另外,PostgreSQL 中列的数据类型究竟是什么?

标签: excel postgresql types floating-accuracy floating-point-precision


【解决方案1】:

您可以找到 Postgres in the manual 的文档。

PostgreSQL 的decimal 不是浮点数,而是任意精度数。 sum() 之类的添加在 Postgres 中是准确的

十进制和数字类型是等价的。这两种类型都是 SQL 标准的一部分。

相比之下,MS Excel 的操作精度有限。 Quoting Wikipedia现场@Tim provided

与其他电子表格一样,Microsoft Excel 仅适用于有限的 准确性,因为它只保留一定数量的数字 描述数字(精度有限)

会出现差异。您可以尝试 PostgreSQL 的 double precision 类型,这似乎更合适。不过,我怀疑你会得到 100% 的匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    相关资源
    最近更新 更多