Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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-将长数字转换为字符串_Javascript_Jquery_Coffeescript - Fatal编程技术网

JavaScript-将长数字转换为字符串

JavaScript-将长数字转换为字符串,javascript,jquery,coffeescript,Javascript,Jquery,Coffeescript,我以一种美丽而神秘的方式计算身份证: "" + 237498237498273908472390847239084710298374901823749081237409273492374098273904872398471298374 > '2.3749823749827392e+92' 不幸的是,在这个过程中的某个地方出现了ID(例如1120764881333946416800)。不幸的是,这意味着他们有时会转向1.1207648813339434e+22 更新: 这似乎是redis的

我以一种美丽而神秘的方式计算身份证:

"" + 237498237498273908472390847239084710298374901823749081237409273492374098273904872398471298374
> '2.3749823749827392e+92'
不幸的是,在这个过程中的某个地方出现了ID(例如
1120764881333946416800
)。不幸的是,这意味着他们有时会转向
1.1207648813339434e+22

更新

这似乎是redis的一个“bug/feature”。没想到会这样

time = new Date().getTime()
pid = process.pid
host = 0; (host +=s.charCodeAt(0) for s in os.hostname())
counter = MIPS.unique_id()

"#{host}#{pid}#{time}#{counter}"

在将数字与字符串连接以进行转换之前,您的数字将转换为
2.3749823749827392e+92

唯一的解决方案是使用接受任意数字的容器格式,该数字可以是字符串或数组


关于如何获取此数字,您能否提供更多详细信息?

Javascript使用8字节双倍存储大数字,即53位精度。在您的情况下,它远远超过53位,因此您应该使用一个大数字库,它可以精确地存储大数字。试试看,您将无法存储该号码。您必须以某种方式计算您的唯一ID,使其精度低于19位(可能使用
%10000000000000000
)。您如何将其传递到客户端层?如果您在文档中的某个地方编写它,则只需将其包装在Javascript字符串或JSON对象中。@Blender
%1e18
怎么样。。。。
# Bug with Big Numbers on zadd
redis = require 'redis'
r = redis.createClient()
r.zadd 'zset', '342490809809999998098', 'key', ->
    r.zscore 'zset', 'key', (_, results) ->
        console.log typeof results # string
        console.log results # 3.4249080981000002e+20