我正在从MS Access数据库获取记录。数据库十进制分隔符是逗号,我无法更改。 我猜测由于数据库和代码中的区域性不同,来自SQL结果的值转换为Double会返回错误值,因为它在数据库中不相同。 我正在使用Petapoco库。
可能有一种方法可以将文化设置为Petapoco,但是如何?
public class TExternalProp
{
public String ObjectID { get; set; }
public String ObjectTable { get; set; }
public String PropName { get; set; }
public int PropType { get; set; }
public String PropStringValue { get; set; }
public Double PropDoubleValue { get; set; }
public int PropIntValue { get; set; }
}
sql = Sql.Builder.Append("WHERE ObjectID=@0 AND ObjectTable=@1 AND PropType<>@2 ", this.box_CMSID, "TSelectiveBox", 4);
sql.Append("ORDER BY PropName ASC;");
foreach (TExternalProp item in petaDb.Fetch<TExternalProp>(sql))
{
myViewModel.ObCol_BoiteInstructions.set_values(item.PropName, item.PropType, item.PropStringValue, item.PropDoubleValue, item.PropIntValue);
}
数据库中的值为3.2,在PropDoubleValue成员中强制返回3.2000000476837158。 我需要获得与数据库中完全相同的值。 有什么想法吗?
解决方案:
MS Access Single Real = C#中的浮点类型。 MS Access Double Real = C#中的双精度类型