在我的实体框架模型中(来自oracle)我有一个包含以下列的表
现在。我使用asp.net webforms数据网格来查看数据。在一个阶段,此列中的值为635838861561284513.我(理论上)在单击此网格上的自定义链接时,将此值作为参数发送到URL。该值将添加到URL中,如下所示:
<a href="javascript:Cover(<%# Eval("BATCH_NO") %>);">View</a>
现在我注意到调试时"<%# Eval("BATCH_NO") %>"
的值是635838861561284500而不是635838861561284513。
但是值在网格中正确显示!!
任何人都可以解释为什么会这样吗?
答案 0 :(得分:6)
因为JavaScript的数字是IEEE-754 double-precision floating point个数字,它们有53位来存储数字的未缩放值(其他位用于指数),这意味着精度的十进制数字不到16位。他们的最大安全&#34;整数值(不会失去精度的整数值)是9007199254740991.你的 635838861561284513 多大于此。
如果要将该数字传递给JavaScript,请最好将其保存在字符串中。