【问题标题】:Decimal or Float (SQL Server and C++)十进制或浮点数(SQL Server 和 C++)
【发布时间】:2011-07-18 09:32:54
【问题描述】:

在 SQL Server 的列表中存储 17 位小数(例如 1.12345678901234567)的最佳方法是什么?

另外,我应该在 C++ 中使用哪种类型才能将这 17 个小数推入 SQL 查询?

谢谢

【问题讨论】:

    标签: c++ sql sql-server floating-point decimal


    【解决方案1】:

    您实际上似乎有 18 位数字(包括整数部分)。您需要一个 128 位浮点数来存储它,请参阅:http://en.wikipedia.org/wiki/Quadruple_precision_floating-point_format(如果您可以访问这样的 CPU,80 位也可以工作。请参阅:http://en.wikipedia.org/wiki/Extended_precision

    要在 C++ 中读取和存储十进制类型,您需要将它们存储为字符串。我会寻找一个 GMP 数学库。 (任意精度数学库。)

    您需要详细说明这些数字的来源,以获得更好的建议。

    你真的需要精确的数字吗?

    【讨论】:

    • 如果我在 C++ 中调试我的代码,我可以看到我的变量(双重结果)包含 0.1234567890123456。当我尝试将其插入表中时,我看到 0.0000000000000000 而不是实际值顺便说一句,我将列类型从浮点数更改为十进制 (16,16)
    【解决方案2】:

    对于您的 SQL Server 列,请使用 Decimal。 您可以精确指定精度(17 位小数)。

    【讨论】:

      猜你喜欢
      • 2012-01-14
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 2014-11-18
      • 1970-01-01
      • 2021-05-04
      相关资源
      最近更新 更多