C# C语言中OracleDecimal到System.Double的转换#
我在从OracleDecimal转换值时遇到了一些问题。这是密码C# C语言中OracleDecimal到System.Double的转换#,c#,oracle,type-conversion,C#,Oracle,Type Conversion,我在从OracleDecimal转换值时遇到了一些问题。这是密码 public static T GetReaderValue(this OracleDataReader dr, string col) where T : struct { int colNo = dr.GetOrdinal(col); var value = (double)OracleDecimal.SetPrecision(dr.GetOracleDecimal(colNo), 28); retur
public static T GetReaderValue(this OracleDataReader dr, string col) where T : struct
{
int colNo = dr.GetOrdinal(col);
var value = (double)OracleDecimal.SetPrecision(dr.GetOracleDecimal(colNo), 28);
return (T) Convert.ChangeType(value, typeof(T), CultureInfo.InvariantCulture);
}
这适用于大多数值,但对于某些值(如0.12345),它会返回0.1234999999之类的数字
有人能就如何在不存在这些舍入错误的情况下转换OracleDecimal提供一些建议吗
谢谢
系统。Double
存储在基数2而不是基数10中。有些数字可以用基数为10的有限位数表示,需要基数为2的无限位数(反之亦然)
由于数据库似乎存储的是十进制数,因此最好将其转换为系统。十进制
值,以免丢失精度(正如系统。十进制
使用基数10的方式与OracleDecimal
相同)。可能重复的