gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:16:02 25 4
gpt4 key购买 nike

在 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/

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