gpt4 book ai didi

c++ - OCI 长双

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:50 26 4
gpt4 key购买 nike

我正在使用 oracle OCI 库开发 C++ 库。我正在从 Oracle Database 11g 数据库加载。在这里我需要加载带小数位的大值。在这种情况下,我需要使用 long double 而不是 double。我不确定 OCI 是否支持 long double。
根据文档,SQLT_FLT 仅适用于 float 和 double。谁能告诉我 OCI 是否支持 long double,如果支持如何检索它们

最佳答案

是也不是。

根据server docs on floats ,“ native ”C 类型最多支持 double (BINARY_DOUBLE)。然而,NUMBER类型可以存储:

  • Positive numbers in the range 1 x 10-130 to 9.99...9 x 10125 with up to 38 significant digits
  • Negative numbers from -1 x 10-130 to 9.99...99 x 10125 with up to 38 significant digits

这比 x86/amd64 上的 long double 更精确。

因此,您需要使用该类型而不是 BINARY_*。可悲的是,developer docs说:

You should not need to use NUMBER as an external datatype. If you do use it, Oracle returns numeric values in its internal 21-byte binary format and will expect this format on input. The following discussion is included for completeness only.

另一方面,也有文档:

AFAICS OCINumberFromReal()支持long double;如果你想要更精确,那么你可以使用 OCINumberFromText()带十进制字符串。

关于c++ - OCI 长双,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12156403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com