通过截断有效地将 OracleDecimal 转换为 .NET 十进制

2024-04-15

当我尝试使用 C# 将以下 Oracle 空间对象转换为坐标集(小数)时,出现算术溢出异常(decimal) OracleUdt.GetValue()

MDSYS.SDO_GEOMETRY(2001, 1041001, 
  MDSYS.SDO_POINT_TYPE(-2.89957214912471,1.56043985049899E-15,NULL),NULL,NULL)

根据Oracle文档 http://download.oracle.com/docs/html/E10927_01/OracleDecimalStructure.htm,这可能是因为其中一个十进制值超出了 .NET 28 位小数的精度范围。我们数据库中超过此精度限制的数据是极其罕见,并且转换需要尽可能高效。

如果结果超过最大精度,通过优雅地截断结果来处理此异常的最佳选择是什么?


VB.NET 代码,未经测试,但我对我拥有的 oracleDecimal 使用了类似的代码。 转换为 C# 应该很容易。

    OracleDecimal oraDec = MDSYS.SDO_GEOMETRY(2001, 1041001, 
            MDSYS.SDO_POINT_TYPE(-2.89957214912471,1.56043985049899E-15,NULL),NULL,NULL)
    oraDec = OracleDecimal.SetPrecision(oraDec, 28)    ' !!!
    Decimal netDec = oraDec.Value
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过截断有效地将 OracleDecimal 转换为 .NET 十进制 的相关文章

随机推荐

  • 我的 if 语句有什么问题?

    我现在正在尝试探索帕斯卡 我遇到了一些编译器错误 我写了一个 if else if 语句 如下所示 if input y or input Y then begin writeln blah blah end else if input n
  • GCC 内联汇编错误:“‘int’的操作数大小不匹配”

    首先 如果有人知道标准 C 库的函数 则会打印 一个字符串 无需寻找二进制零 但需要绘制字符数 请告诉我 否则 我会遇到这个问题 void printStringWithLength char str ptr int n chars asm
  • .net 应用程序挂起。奇怪的崩溃转储

    生产服务器有一个 24x7 运行的应用程序 有时它开始消耗接近 50 的 CPU 我无法在本地重现它 但我用 adplus 做了内存转储 服务器有Windows 2008 Server 64位 NET 3 5 该应用程序侦听 MSMQ 并有
  • Python:将函数作为参数传递,并设置选项

    在Python中 我需要调用许多非常相似的函数相同的输入参数 sampleA and sampleB 唯一的问题是其中一些功能需要option需要设置 有些则没有 例如 import scipy stats scipy stats mann
  • VBA 中的简单递归函数与 Excel 未返回预期结果

    我有一个用 VBA 编写的简单递归函数 它执行以下操作 它必须计算我们必须采用参数 x 的对数来查找 log x 例子 logcount 5 log 5 0 6 所以函数应该返回 1 logcount 89 log 89 1 9 和 log
  • 不同日期的列表

    我有以下代码 List
  • Picasso + RxJava2:方法调用应该从主线程发生

    这是我最初的问题 我试图在其中显示一些图像AutoScrollViewPager 我正在使用毕加索来实现同样的目的 但是 我想使用 Rxjava2 Picasso 做同样的事情 我对 RxJava 概念有点陌生 因此 如果有人可以帮助我提供
  • 无法让 Docker 容器相互通信

    我有两个 Docker 容器 一个运行 React 应用程序 使用 create react app 构建 另一个运行 Node 应用程序 API 我设置了一个 docker compose 文件 并根据文档 https docs dock
  • 每次引发异常时调用钩子函数

    假设我希望每次在程序中的任何位置引发任何异常时都能够记录到文件中 我不想修改任何现有代码 当然 这可以推广到每次引发异常时都能够插入一个钩子 下面的代码做这样的事情被认为是安全的吗 class MyException Exception d
  • D3:细化序数比例以返回颜色组?

    我已经设置了一个序数尺度D3 js https github com mbostock d3 wiki API Reference如下 到目前为止效果很好 var color d3 scale ordinal range blue red
  • 当用户导航到一个域内的其他页面时,谷歌分析如何跟踪事件

    在 Google 的文档中 据说可以通过以下方式跟踪事件 a click me a 或旧版本 a click me a 我正在使用 Firebug 查看单击链接时发出的请求 我看到有中止的请求 http www google analyti
  • 从对象中获取数据

    我正在尝试使用此代码从用户的 Twitter 帐户获取数据 user info twitteroauth gt get account verify credentials 我在一个对象中得到一个很长的值 stdClass Object i
  • java中的子包类可以访问父包类吗?

    在java父包类中可以从子包类访问吗 请给我解释一下吗 例子 包 A A1 A2 包含类 sub 包A包含类sup 有没有办法从 sub 访问 super 请解释一下 我尝试导入它不起作用 例子 在程序目录结构之前 package1 包含
  • 为什么每次保存文件时 vim 都会创建一个新文件?

    我有一个名为test test mypc ls i 4982967 test 然后我使用vim更改其内容并输入 w来保存它 它现在有一个不同的索引节点 test mypc ls i 4982968 test 这意味着它已经是一个不同的文件了
  • 如何使用 LINQ to Entities 包含另一个表中的一个特定行

    我有一个包含这两个表的数据库 Customer and CustomerStatus CustomerStatus是所谓的只读表 对客户状态的所有更改都会导致插入到该表中 当前客户状态可通过以下方式找到CustomerStatus Stat
  • 无法显示 Firebase 存储中的图像

    我正在使用新的 Firebase 存储并上传图像 然后获取下载网址 将下载网址转换为字符串后 我使用它在我的活动中显示 但它只显示下载网址 我使用下面的代码上传图像并获取下载网址 dialogBuilder setTitle Add Sho
  • 容器 div 标签的 100% 高度和宽度不起作用

    我的网页布局如下 以下 CSS 代码在 Internet Explorer 9 中为我提供了 100 的高度和宽度 虽然同样在 FF 和 Chrome 中为我提供了 100 的宽度 但不是 100 的高度 我尝试了几个例子 其中大多数都有相
  • 在 Android 浏览器中获取当前 URL

    我正在寻找一种方法来获取用户在 Android 浏览器应用程序上访问的当前 URL 我发现我可以从以下位置获取上次访问的 URLBrowser BOOKMARKS URI使用以下技术的数据库 Cursor cursor context ge
  • MySQL解释过滤列跳转4100带索引

    我的查询 EXPLAIN EXTENDED SELECT artwork id artwork added FROM artwork ORDER BY artwork added DESC LIMIT 0 6 当我在 添加 上添加索引以避免
  • 通过截断有效地将 OracleDecimal 转换为 .NET 十进制

    当我尝试使用 C 将以下 Oracle 空间对象转换为坐标集 小数 时 出现算术溢出异常 decimal OracleUdt GetValue MDSYS SDO GEOMETRY 2001 1041001 MDSYS SDO POINT