为什么这个数字会加一? [复制]

2024-01-04

console.log(10209761399365907);

为什么此代码输出一个大一的数字(10209761399365908 而不是 10209761399365907)?

仅此特定号码才会发生这种情况。例如,使用 10155071933693662 我得到正确的值(10155071933693662)。

关于该具体号码我需要了解什么吗?我想到的唯一解决方法是将值作为字符串传递。


您的数值太大,无法精确表示为 64 位浮点数。您得到的值是一个近似值。 JavaScript 本身只有 64 位浮点数;价值观do适合一个long在 C 或 C++ 中可能太大而无法准确表示,因为其中一些 64 位用于浮点表示中的指数。 (权衡是,使用浮点可以使用近似值much比简单整数表示可能的数值更大或更小。)

如果将值作为数字操作并不重要,请将其设为字符串:

console.log("10209761399365907");

或者正如我对最初出现的问题所建议的那样:

<input type="button" value="Invita" onclick="Invite('@us.FacebookID')" />

其中“FacebookID”是有问题的大数字。

有一个常量(在较新的 JavaScript 环境中)称为Number.MAX_SAFE_INTEGER。这告诉您可以表示多大的数字,以便准确地表示该值;也就是说,64 位浮点尾数将包含整个值的显式位。

Larger even整数可以精确表示,具体取决于其二进制表示形式的低端有多少个零位。因此,1152921504606846800可以精确表示,因为它在二进制表示的低端有 7 位全零。然而,1152921504606846801出来为1152921504606846800因为那么低1位无处可去。 (未表示的位假定为零。)

附录:这是所提出问题的(几乎)原始版本,用于解释上面可能令人困惑的示例代码:


我遇到了一个很奇怪的 Javascript 问题。 我有一些来自我的服务器的 ID,当我按下按钮时,参数将传递给执行请求的方法。

这是代码:

<script type="text/javascript">
function Invite(id)
{
    alert(id);
}
</script>

另一方面,我有:

(CSHTML 语法)

 <input type="button" value="Invita" onclick="Invite(@us.FacebookID)" />

那变成了:

<input type="button" value="Invita" onclick="Invite(10209761399365907)">

但是当我单击按钮时...该方法接收参数的数量增加了 1!

而且这种情况只发生在一个特定的 ID 上! 例如,使用 10155071933693662 我得到正确的值(10155071933693662)

关于该具体号码我需要了解什么吗?所有这一切真的很奇怪,我想到的唯一解决方法是将值作为字符串传递!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这个数字会加一? [复制] 的相关文章

随机推荐

  • 使用 moment.js 显示本地时区名称

    我在用moment js并想向用户展示本地时区名称 http momentjs com timezone docs using timezones guessing user timezone 例如 CET 或 PST 使用 var tim
  • 将图像置于 Twitter 引导导航栏中居中

    这是我的实时网站 http ancient badlands 4040 herokuapp com http ancient badlands 4040 herokuapp com 我试图将图像居中 并使链接与图像垂直对齐 读完这篇文章后
  • Java 有“可视化调试器”吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何 Java 调试器可以显示运行某些代码行时实际发生的情况的逐步动画 我的朋友问了很多Java问题 我现在不知道能否沟通 我也不知
  • 从图库中选定的图像中获取图像的确切文件大小

    这是我的文件选择器代码 private void showFileChooser Intent intent new Intent intent setType image intent setAction Intent ACTION GE
  • React Native Android Bridge 错误:必须在主线程上调用方法 addObserver

    我正在使用 Wootrick SDK 创建一个反应本机的桥梁 当我调用特定函数时 我会收到以下日志 但 Wootric Survey 不会显示 java lang IllegalStateException Method addObserv
  • 在 IntelliJ 中为 Scala 项目设置 Javadoc

    设置 Scaladoc 后 我发现 IDE 中仍然缺少一些文档 在我看来 非常感谢Peter https stackoverflow com users 57695 peter lawrey注意到这一点 非粗体的函数没有文档 粗体字的功能只
  • 无法捕获 playwright 中的 response.json()

    我正在尝试使用 playwright 捕获 json 响应 我不断收到待处理的 Promise 但是 在 headless false 模式下 我可以看到数据正在被接收并填充在浏览器上 我刚刚开始玩Playwright 对 Promise
  • sqlite错误没有这样的列[重复]

    这个问题在这里已经有答案了 这里有人对这个错误有一些经验吗 仅当我使用 WHERE 子句时 才会出现此错误 我使用 php PDO 来获取结果 这是我的简单桌子 sql CREATE TABLE samenvatting stem id I
  • 输出/打印“可读”字典

    我正在准备一个api 并使用文档字符串作为文档 api 服务选择相关的 ApiClass 方法并连接每个文档字符串以创建文档 这样 程序开发人员和 API 用户都可以获得相同的文档 我的班级结构是这样的 API STATUS 1 some
  • Android:如何在设置背景可绘制时保持角半径?

  • 如何在 Vim 中使用“wildignore”?

    我在弄清楚语法时遇到了很多麻烦wildignoreVim 中的设置 假设我想要我的文件查找器插件 我使用Ctrlp http kien github com ctrlp vim 它使用wildignore 不搜索隐藏的文件和文件夹 即以 a
  • 如何删除树枝中数组的第一项?

    我在树枝中有一个名为 Posts 的数组 有没有办法轻松删除该数组的第一项 所以它的结构就像这样 array post 1 post 2 post 3 我想知道是否可以使用 twig 中的函数轻松删除第一篇文章 array post 2 p
  • 如何使表单的特定部分可滚动?

    我正在用 vb6 编写一个程序 要求我能够向右滚动屏幕的某个区域 它仅由线条和图片框组成 有没有办法只滚动该区域 谢谢 您可以利用以下事实 某些可视控件可以充当其他可视控件的容器 举个例子 在 VBIDE 中 放置一个Frame通过 VB
  • 对所有参数组合应用函数

    我希望能够将函数应用于一组输入参数的所有组合 我有一个可行的解决方案 如下 但如果没有更好 更通用的方法来执行此操作 例如 我会感到惊讶plyr 但到目前为止还没有发现任何东西 有更好的解决方案吗 Apply function FUN to
  • 固定内存OpenCL,有人成功使用过吗?

    我用的是CL MEM ALLOC HOST PTR与我的旗帜clCreateBuffer调用 但计算分析器将我的所有 主机内存传输类型 显示为可分页 我在两种不同的内核设置中尝试过它 但分析器不会显示我正在使用固定内存 当内核开始使用固定内
  • ICS 模拟器没有软件按钮吗?

    因此 我正在将我的应用程序从 3 0 更新到 4 0 但我遇到了模拟器问题 具体来说 软件按钮可以not使用 Galaxy Nexus ish 皮肤时会出现 我不确定它是否准确 但应该足够接近 这是WXGA720 它的值 Hardware
  • 将树状图与 Python 的 scipy.cluster.hierarchy 中的簇号进行匹配

    以下代码生成一个具有 10 个叶节点的简单层次聚类树状图 import scipy import scipy cluster hierarchy as sch import matplotlib pylab as plt X scipy r
  • Python tkinter画布闪烁

    首先 我应该声明 我知道该网站上还有其他名称相似的帖子 我已经经历过它们 但据我所知 它们并没有解决我的问题 实际上我想说我的问题比大多数例子要简单得多 简而言之 我想创建一个透明矩形 可以用来显示拖动选择区域 当我发现 tkinter 不
  • 我制作的相机效果不佳,为什么玩家移动速度比相机快?

    我制作了一个游戏 但是当我想添加相机来移动玩家时 它不起作用 玩家移动得比相机快并离开屏幕 我尝试从地形中移除玩家的大小 但没有任何效果 玩家仍然从屏幕中消失 这是我的代码 pygame init scsizeX 600 scsizeY 4
  • 为什么这个数字会加一? [复制]

    这个问题在这里已经有答案了 console log 10209761399365907 为什么此代码输出一个大一的数字 10209761399365908 而不是 10209761399365907 仅此特定号码才会发生这种情况 例如 使用