首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OCI与long double

OCI与long double
EN

Stack Overflow用户
提问于 2012-08-28 17:29:53
回答 1查看 768关注 0票数 1

我正在用oracle OCI库开发一个C++库。我正在从Oracle数据库11g数据库加载。在这里,我需要加载带有小数位的大值。在这种情况下,我需要使用long double而不是double。我不确定OCI是否支持long double。

根据文档,SQLT_FLT仅用于浮点型和双精度型。谁能告诉我OCI是否支持long double,如果支持,如何检索它们

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-28 18:01:26

是也不是。

根据server docs on floats的说法,“原生”C类型支持高达双精度(BINARY_DOUBLE)。但是,NUMBER类型可以存储:

  • 阳性数在1 x 10-130至9.99...9 x 10125范围内,高达38个有效数,范围-1 x 10-130至9.99...99 x 10125,高达38个有效digits

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

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

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

另一方面,还有关于以下内容的文档:

  • using the OCINumber类型;
  • OCI NUMBER Functions.

AFAICS OCINumberFromReal()支持long double;如果你想要更高的精度,你可以使用带有十进制字符串的OCINumberFromText()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12156403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档