c# - 有效地将 OracleDecimal 转换为带截断的 .NET 十进制

标签 c# .net oracle type-conversion

在 C# 中尝试使用 (decimal) OracleUdt.GetValue()

将以下 oracle 空间对象转换为坐标集(小数)时出现算术溢出异常
MDSYS.SDO_GEOMETRY(2001, 1041001, 
  MDSYS.SDO_POINT_TYPE(-2.89957214912471,1.56043985049899E-15,NULL),NULL,NULL)

根据 Oracle documentation ,这可能是因为其中一个十进制值超出了 .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

关于c# - 有效地将 OracleDecimal 转换为带截断的 .NET 十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7559419/

相关文章:

c# - 在 login.aspx 和 default.aspx 之间进行通信

c# - 如何从 .NET 4.0 (VS2010) 项目中定位 .NET 1.1 中的 API?

javascript - IdentityServer3 和 JWT ValidateIssuerSigningKey

c# - 如何保护我的 .net winforms 程序集不受客户客户的影响

c# - 使用包含 EF 时可能的 SQL 注入(inject)?

oracle - oracle存储过程中的更新语句不起作用

sql - 循环查询表的每一列 - Oracle 数据库

java - 为什么 JSP 文件的文件名中带有感叹号?

c# - 如何显示已关联到控件的所有工具提示

c# - 在 gridview 中更改特定单词的颜色