为什么我的价值四舍五入(向上或向下)

Why is my value rounded (up or down)

在我的 entity framework 模型(来自 oracle)中,我有一个 table 包含以下列

现在。我使用 asp.net 网络表单数据网格来查看数据。在某个阶段,此列中的值为 635838861561284513。当我单击此网格上的自定义 link 时,我确实(理论上)将此值作为参数发送到 url 上。该值添加到 url 如下:

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

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

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

谁能解释为什么会这样?

因为JavaScript的数字是IEEE-754 double-precision floating point的数字,它有53位来存储数字的未缩放值(其他位用于指数),转换为不到16位十进制精度位数。它们的最大 "safe" 整数值(不会丢失精度的整数值)是 9007199254740991。你的 635838861561284513 比那个

如果您想将该号码传递给 JavaScript,最好将其保存在一个字符串中。