Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery data()将字符串视为数字时出现问题_Javascript_Jquery_Floating Point - Fatal编程技术网

Javascript jQuery data()将字符串视为数字时出现问题

Javascript jQuery data()将字符串视为数字时出现问题,javascript,jquery,floating-point,Javascript,Jquery,Floating Point,我有一个MySQL BIGINT,我正在HTML5数据中存储它。然后我尝试访问该值并通过AJAX调用传递它 <div data-id="211285677671858177"> 问题在于jQuerydata函数似乎将该值作为浮点而不是字符串检索。因此,将其添加到空白字符串中并没有帮助,因为已经太晚了-它已经被舍入(在本例中为211285677671858180)。我能做些什么来修复此问题?尝试将其键入字符串: id: '' + $(this).data('id').toString

我有一个MySQL BIGINT,我正在HTML5数据中存储它。然后我尝试访问该值并通过AJAX调用传递它

<div data-id="211285677671858177">

问题在于jQuery
data
函数似乎将该值作为浮点而不是字符串检索。因此,将其添加到空白字符串中并没有帮助,因为已经太晚了-它已经被舍入(在本例中为
211285677671858180
)。我能做些什么来修复此问题?

尝试将其键入字符串:

id: '' + $(this).data('id').toString();

JavaScript中没有“长整数”这样的东西。所有数字都是64位浮点。在IEEE-794浮点表示法中无法准确表示您所在的数字

“修复”此问题的唯一方法是将数字转换为域中可以处理大整数值的字符串。

这不是“long int”的情况。实际上,您得到的数字是最接近的可用浮点数表示形式

无论如何,您希望该值作为字符串。引用(我的重点):

每次尝试都会将字符串转换为JavaScript值 (这包括布尔、数字、对象、数组和null)否则 它以字符串的形式保留以字符串形式检索值的属性 在不进行任何转换的情况下,使用attr()方法。


如果希望
data
将数据属性值视为字符串,请尝试将其括在单引号中。我想,这里的问题是,您需要删除引号。

我遇到了一个类似的问题,数据id(字母数字)通过使用.data()进行转换,结果最后几个字符被转换为全零。需要进行一些研究才能确定这是.data()的jQuery实现中的一个错误

参考:


对我来说,为了直接获得数据id作为解决方法,我直接使用了.attr(“数据id”),这给了我正确的id。

好的。不管怎样,我不希望它是一个数字。我希望它被视为一个字符串,但
data
似乎将其视为一个浮点。有什么想法吗?所有属性值都是字符串。但是,当您使用
.data()
API时,jQuery试图提供帮助并将内容转换为数字类型。尝试只获取属性的
.attr()
值。@andrewtweber在黑暗中拍摄全场,但使用$(this.attr('data-id');把它当作一根绳子吗?是的,那很管用。有趣的。。。我想知道
数据
是不是一个bug?我会把这个问题留一段时间,看看其他人有什么问题say@andrewtweber这不是一个bug,正如其他人提到的那样,jQuery正努力做到主动,并假设您最可能想要的东西。在这种情况下,假设是错误的。好的,谢谢你的解释。我希望有一种方法告诉
数据
不要转换它,但我想
attr
现在就可以了。我还发现,使用也非常简单,实现起来也很快。
id: '' + $(this).data('id').toString();