小数点导致CSV值中的值添加不正确

时间:2011-01-31 13:41:28

标签: c# web-services csv

我有以下CSV格式的值 -

事实上,机智

10.5,11.5

15.5,16.5

我将这些内容发送到Web服务,然后将它们存储在数据库中。 Web服务的响应应该等于相应列中的值的总和 -

即。对于'事实',回复应该等于10.5 + 15.5因此= 26, 因此,“机智”11.5 + 16.5 = 28。

然而,deciaml点似乎导致结果响应问题,并在得到'fact'= 25和'tact'= 27后忽略数字。

我使用以下代码在csv中找到合适的值并将其设置为对象数组中的位置 -

upDateFeed[i] = new webservice.upDateFeed();

upDateFeed[i].fact = (int)System.Convert.ToDouble(el.Descendants("var").Where(x => (string)x.Attribute("name") =="fact").SingleOrDefault().Attribute("value").Value);
upDateFeed[i].tact = (int)System.Convert.ToDouble(el.Descendants("var").Where(x => (string)x.Attribute("name") =="tact").SingleOrDefault().Attribute("value").Value);

如何考虑deciaml积分后的数字呢?

感谢您的时间。

3 个答案:

答案 0 :(得分:3)

您明确将double转换为int,您期望会发生什么? :)

答案 1 :(得分:1)

您正在将double转换为int,这意味着它将删除任何浮点精度。您需要更新upDateFeed课程,期望double而不是int,然后您无需进行任何投射。

另外,从可读性的角度来看,您应该稍微分解一下代码,以便更清楚地看到您正在做什么。

答案 2 :(得分:0)

如果Web服务只接受int,您将无法获得所需的数字。它将永远是圆形的

upDateFeed [I] .fact

upDateFeed [I] .tact

两者都需要是具有小数空格的类型,您对int进行的转换意味着要删除小数。我假设因为webservice只接受整数而不是小数。如果是这种情况,Web服务需要更改。