我需要生成一个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();
但这不起作用!
答案 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
成为.123
而1230
也成为.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);
}