本文共 772 字,大约阅读时间需要 2 分钟。
问题:用遍历list累加方式和sum()函数取相同的数据,居然数据不一样?
数据库的两条数据分别是9位精度的:
经过调试就发现List在使用SUM()函数的时候把原本9位精度的数据竟然变成了
程序中:
这下好了,怎么就差0.001了呢?
原因:
SUM()求和时的精度问题
跟数据表字段定义有关
SUM以最精确的 expression 数据类型返回所有表达式值的和 返回结果:<%=conn.execute("Select SUM(TotalPrice) as List1 from OrderList where TranslateStatus=1")("List1")%>
语句查询的结果居然会返回很长的数字(5700.25001144409 )11位小数 查找数据表中对应的 TOTALPRICE字段定义.单精度.精确到2位小数.参考:
总结:查看了自己的字段就是decimal类型的,一数发现使用sum()函数后也的数据也没有38位呀,一看后面不还有个m嘛
这下我就清楚了
解决:使用数据类型 转换
string strfn = item.Qty.ToString();
strfn = String.Format("{0:N9}", strfn); //保留小数点后六位 Qty = Convert.ToDecimal(strfn);
转载地址:http://zqgmf.baihongyu.com/