为什么我的值被舍入(向上或向下)

时间:2015-11-26 08:08:28

标签: javascript c# asp.net decimal aspxgridview

在我的实体框架模型中(来自oracle)我有一个包含以下列的表 enter image description here

现在。我使用asp.net webforms数据网格来查看数据。在一个阶段,此列中的值为635838861561284513.我(理论上)在单击此网格上的自定义链接时,将此值作为参数发送到URL。该值将添加到URL中,如下所示:

<a href="javascript:Cover(<%# Eval("BATCH_NO") %>);">View</a>

现在我注意到调试时"<%# Eval("BATCH_NO") %>"的值是635838861561284500而不是635838861561284513。

但是值在网格中正确显示!!

任何人都可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:6)

因为JavaScript的数字是IEEE-754 double-precision floating point个数字,它们有53位来存储数字的未缩放值(其他位用于指数),这意味着精度的十进制数字不到16位。他们的最大安全&#34;整数值(不会失去精度的整数值)是9007199254740991.你的 635838861561284513 大于此。

如果要将该数字传递给JavaScript,请最好将其保存在字符串中。