带长双圈的OCI 我用Oracle OCI库开发了一个C++库。我正在从Oracle数据库11g数据库加载。这里我需要加载带有小数位的大值。在这种情况下,我需要使用longdouble而不是double。我不确定OCI是否支持长双精度。 根据文档,SQLT_FLT仅适用于浮点和双精度。有人能告诉我OCI是否支持long double,如果支持,如何检索它们吗

带长双圈的OCI 我用Oracle OCI库开发了一个C++库。我正在从Oracle数据库11g数据库加载。这里我需要加载带有小数位的大值。在这种情况下,我需要使用longdouble而不是double。我不确定OCI是否支持长双精度。 根据文档,SQLT_FLT仅适用于浮点和双精度。有人能告诉我OCI是否支持long double,如果支持,如何检索它们吗,c++,oracle,C++,Oracle,根据,原生C类型支持高达双精度(BINARY\u double)。但是,该类型可以存储: 范围为1 x 10-130到9.99…9 x 10125的正数,最多38个有效数字 从-1 x 10-130到9.99…99 x 10125的负数,最多38个有效数字 这比x86/amd64上的长双精度更精确 因此,您需要使用该类型而不是BINARY.*。可悲的是,政府说: 您不需要将NUMBER用作外部数据类型。如果您确实使用它,Oracle将以其内部21字节二进制格式返回数值,并在输入时使用这种格式

根据,原生C类型支持高达双精度(
BINARY\u double
)。但是,该类型可以存储:

  • 范围为1 x 10-130到9.99…9 x 10125的正数,最多38个有效数字
  • 从-1 x 10-130到9.99…99 x 10125的负数,最多38个有效数字
这比x86/amd64上的长双精度更精确

因此,您需要使用该类型而不是
BINARY.*
。可悲的是,政府说:

您不需要将
NUMBER
用作外部数据类型。如果您确实使用它,Oracle将以其内部21字节二进制格式返回数值,并在输入时使用这种格式。以下讨论仅用于完整性

另一方面,在以下方面也有文档:

  • 类型
AFAICS支持长双精度;如果您想要更高的精度,那么可以使用十进制字符串。

是和否

根据,原生C类型支持高达双精度(
BINARY\u double
)。但是,该类型可以存储:

  • 范围为1 x 10-130到9.99…9 x 10125的正数,最多38个有效数字
  • 从-1 x 10-130到9.99…99 x 10125的负数,最多38个有效数字
这比x86/amd64上的长双精度更精确

因此,您需要使用该类型而不是
BINARY.*
。可悲的是,政府说:

您不需要将
NUMBER
用作外部数据类型。如果您确实使用它,Oracle将以其内部21字节二进制格式返回数值,并在输入时使用这种格式。以下讨论仅用于完整性

另一方面,在以下方面也有文档:

  • 类型

AFAICS支持长双精度;如果您想要更高的精度,那么可以使用十进制字符串。

非常感谢您的想法。:)由于我是这个领域的新手,如果您能提供一个链接或一些关于示例代码的帮助,为我的问题提供解决方案,我将不胜感激。很抱歉,我从未与Oracle合作过。但项目符号列表中的第一个链接提供了一些冗长的示例,您可以从中开始。非常感谢您的想法。:)由于我是这个领域的新手,如果您能提供一个链接或一些关于示例代码的帮助,为我的问题提供解决方案,我将不胜感激。很抱歉,我从未与Oracle合作过。但项目列表中的第一个链接提供了一些冗长的示例,您可以从中开始。