生成一个大的随机浮动jquery / JavaScript

时间:2014-03-11 11:13:47

标签: javascript jquery random floating-point

我需要生成一个12位和13位小数浮点值,如下所示:

123438767411.238792938

我怎样才能在Javascript / Jquery中做到这一点?是否可以使用JavaScript生成此代码?

我是这样想的:

v1 = Math.floor((Math.random()*10000000000)+1);
v2 = Math.floor((Math.random()*100000000)+1);
v = v1.toString() + "." + v2.toString();

但这不起作用!

1 个答案:

答案 0 :(得分:1)

(假设您的意思是字符串形式,而不是数字,因为IEEE 754不能有那么多有效数字)

整数部分必须是12位数还是1或123?如果它可以是12位或更短,那么它可以是

(Math.floor (Math.random() * Math.pow(10,12)) 
    + (Math.floor (Math.random() * Math.pow(10,13)) 
      / Math.pow(10,13)).toString().substring(1))

请注意,当小数部分结果为0时,上述情况可能会出现问题,尽管机会非常小。 (然后.0部分消失了,虽然我们可以使用条件来添加它。或者我们可以将小数部分123视为.0000000000123而不是.123并使用:

(Math.floor (Math.random() * Math.pow(10,12)) 
    + "." + Math.floor (Math.random() * Math.pow(10,13)))

但这取决于我们是否关心123成为.1231230也成为.1230,因为如果我们关心它,我们可以说.123.1230相同。

另外,如果我们想要000042987017.0790946977900这样的形式,那么它总是12位整数和13位小数,那么我们可以做零填充或使用这样的东西:

示例:http://jsfiddle.net/jL4t4/1/

var i, s = "";

for (i = 0; i < 26; i++) {
    s += (i === 12) ? "." : Math.floor(Math.random() * 10);
}