C# 使用MS Access十进制分隔符逗号从petapoco sql请求强制转换双精度
我正在从MS Access数据库中获取记录。数据库十进制分隔符是逗号,我无法更改它。 SQL结果中的值被转换为Double返回错误的值,因为它在数据库中不相同,我猜是因为数据库和代码中的文化差异。 我正在使用Petapoco图书馆 也许有一种方法可以将文化融入Petapoco,但如何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;
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双实=双输入#