存储在数据库中的小数作为四舍五入的小数返回到 .net 配置文件

Decimal stored in database returned to .net Profile as rounded decimal

我有一个自定义的 .net 配置文件,它在 SQL Table

中存储一个十进制值
Column decCode = Numeric (3,1)

存储的值为0.8

我在 web.config 中的个人资料 属性 是

<add name="decCode" provider="SqlProfile" customProviderData="decCode,Decimal" type="System.Decimal" />

当我执行 ProfileBase.GetPropertyValue("decCode") 时,值似乎总是向上舍入。 (ProfileBase 不是继承的,它是标准的 aspnet 配置文件 class)

举个例子: (在 DB 中为 0.8)

Dim dec As Decimal = CType(pc.GetPropertyValue("decCode"), Decimal) === 1D
Dim a1 As String = String.Format("{0}: {1}", "G", dec.ToString("G")) === 1
Dim a2 As String = String.Format("{0}: {1}", "C", dec.ToString("C")) === £1.00
Dim a3 As String = String.Format("{0}: {1}", "E04", dec.ToString("E04")) === 1.0000E+000
Dim a4 As String = String.Format("{0}: {1}", "F", dec.ToString("F")) === 1.00
Dim a5 As String = String.Format("{0}: {1}", "N", dec.ToString("N")) === 1.00
Dim a6 As String = String.Format("{0}: {1}", "P", dec.ToString("P")) === 100.00%
Dim a7 As String = dec.ToString() === 1
Dim a8 As String = dec.ToString("0.0") === 1.0

好像我使用 linq 获得 decCode 的值

return (_context.pUserProfiles.Where(p => p.UserId == GUID).FirstOrDefault().decCode).ToString()

我得到 0.8

我怎样才能使用 ProfileBase.GetPropertyValue 来 return 我得到正确的小数点?

您必须将 "customProviderData" 和 "cType" 中的 DECIMAL 更改为 DOUBLE,如下所示:

 <add name="decCode" provider="SqlProfile" customProviderData="decCode,Double" type="System.Double" />

  Dim dec As Double = CType(pc.GetPropertyValue("decCode"), Double)