C# 使用MS Access十进制分隔符逗号从petapoco sql请求强制转换双精度

C# 使用MS Access十进制分隔符逗号从petapoco sql请求强制转换双精度,c#,ms-access,casting,double,petapoco,C#,Ms Access,Casting,Double,Petapoco,我正在从MS Access数据库中获取记录。数据库十进制分隔符是逗号,我无法更改它。 SQL结果中的值被转换为Double返回错误的值,因为它在数据库中不相同,我猜是因为数据库和代码中的文化差异。 我正在使用Petapoco图书馆 也许有一种方法可以将文化融入Petapoco,但如何 public class TExternalProp { public String ObjectID { get; set; } public String ObjectTable { get;

我正在从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);
}
公共类TExternalProp
{
公共字符串ObjectID{get;set;}
公共字符串ObjectTable{get;set;}
公共字符串PropName{get;set;}
公共int PropType{get;set;}
公共字符串PropStringValue{get;set;}
公共双值{get;set;}
public int propantvalue{get;set;}
}
sql=sql.Builder.Append(“其中ObjectID=@0和ObjectTable=@1和PropType@2,this.boxu CMSID,“TSelectiveBox”,4);
Append(“orderbypropname ASC;”;
foreach(petaDb.Fetch中的TExternalProp项(sql))
{
myViewModel.ObCol_BoiteInstructions.set_值(item.PropName、item.PropType、item.PropStringValue、item.PropDoubleValue、item.PropIntValue);
}
数据库中的值为3.2,PropDoubleValue成员中的cast返回值为3.2000000476837158。 我需要得到与数据库中完全相同的值。 有什么想法吗

解决方案:


MS Access Single Real=浮点型,C#。MS Access Double Real=Double type in C#

如果属性是
Double
(如上所述),我可以复制该属性,但Access数据库中的字段定义为单个:

尝试将属性定义更改为
Single
,看看是否可以解决问题


编辑:更正了我在类型名称上的大小写。

区域性影响数字的显示方式,而不是数字的存储方式。如果这与此有关,我会感到惊讶。可能是另一种情况。返回的值是数据库中的值,但您在Access中看到它的显示方式使它看起来像是3.2。我会先验证每一个假设,然后再决定要解决什么。@ScottHannen是对的。您正在混合显示和存储的值,或者您的Petapoco在幕后做了一些事情。谢谢。我真蠢!MS Access Single Real=浮点型,C#。MS Access双实=双输入#