(C#)如何存储double数据以至于不损失精度?

double类型存储的变量例如:-3.5738402433531764。我放入datatable中就少了最后两位。变成-3.57384024335318。后来我尝试直接使... double类型存储的变量例如:-3.5738402433531764。我放入datatable中就少了最后两位。变成-3.57384024335318。后来我尝试直接使用double.tostring()也发现少了最后两位。另外我是想把double数据存入数据库,这时数据库选用何种类型来存储该数据是比较好的。 展开
 我来答
百度网友1297175
推荐于2018-04-24 · 超过26用户采纳过TA的回答
知道答主
回答量:94
采纳率:100%
帮助的人:49.4万
展开全部
double d=-3.5738402433531764;
string sql = "update Table1 set [Number]=@p1 where ID=1";
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=.\\SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|\\Database.mdf;User Instance=true";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlParameter sp = new SqlParameter("@p1",SqlDbType.Decimal,38,18);
sp.Value=d;
cmd.Parameters.Add(sp);
try
{
conn.Open();
return(cmd.ExecuteNonQuery());
}
catch (Exception)
{
return -1;
throw;
}
finally
{
conn.Close();
}

Number字段建议用Decimal(38,19)类型存储。
C#程序中查询数据时建议用Double或Decimal。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
2014-06-07 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7797万
展开全部
c#double的有效位数(也就是不管整数部分还是小数部分加起来的位数)是15位,因此你后面再手工加多少位都是没用的,.net内部就不会给你保留!
追问
关键问题是,他有效位数是15位,但是运算时18位都在运算,我其实精度小一点没有关系,用float也行。但是就是不能算的时候是一个值,存的时候变成另一个值。怎么办?
追答
运算时18位都在运算---证据?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式