我有以下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积分后的数字呢?
感谢您的时间。
答案 0 :(得分:3)
您明确将double
转换为int
,您期望会发生什么? :)
答案 1 :(得分:1)
您正在将double转换为int,这意味着它将删除任何浮点精度。您需要更新upDateFeed
课程,期望double
而不是int
,然后您无需进行任何投射。
另外,从可读性的角度来看,您应该稍微分解一下代码,以便更清楚地看到您正在做什么。
答案 2 :(得分:0)
如果Web服务只接受int,您将无法获得所需的数字。它将永远是圆形的
upDateFeed [I] .fact
upDateFeed [I] .tact
两者都需要是具有小数空格的类型,您对int进行的转换意味着要删除小数。我假设因为webservice只接受整数而不是小数。如果是这种情况,Web服务需要更改。