我用的是if (this.getField("Form No").valueAsString=="") {
`this.getField("Form No").value = util.printf("%05d", Math.floor((Math.random() * 99999) + 1000));`}
试图在打开时用PDF中的随机5位数填充文本字段。它似乎产生一个从5-6位数不等的数字,而不是精确的5位数。
我做错了什么?
谢谢你的雷亚尔。对不起,对于javascript,我非常缺乏经验。我猜你是说:
function getRandomArbitrary(min, max) { return Math.random() * (max - min) + min; }
但是,我如何在自己的代码中使用10000作为最小值,99999作为最大值呢?
发布于 2017-03-01 01:41:31
表达式rnd() * 99999将在范围0..99999中给出一个数字(这里的所有范围在下端都是包含的,在上面是排他的,所以这个范围不包括99999)。当您将1000添加到这个值中时,您将得到范围1000..100999中的一个数字。
这是四位数、五位数或六位数,但是你永远不会看到四位数的数字,因为你用%05d强制一个前导零来打印它们。但是,%05d指定了一个最小字段宽度,因此将通过不变的6位数字传递,因此您可以看到五位数和六位数。
如果您所追求的是一个没有前导零的5位数字,则应该得到0..90000then adding ten thousand to translate that to10000.1000000‘范围内的数字,如下所示:
Math.floor(Math.random() * 90000) + 10000或者,使用一个通用函数:
function getRangeVal(lo, hi) {
return Math.floor(Math.random() * (hi + 1 - lo)) + lo;
}
val = getRangeVal(10000, 99999);后一种方法的优点是可以在任意范围内生成数字,而不必考虑太多。例如,它还可以轻松地从0..100000执行一个五位数的数字,其中包括:
val = getRangeVal(0, 100000);如果这就是您想要的(您的问题在这一点上有点模糊,因为它都添加了一个偏移量,就好像您希望它从10000开始,并且使用%05d,就好像允许10000以下的数字一样)。
因此,底线是,如果您在10000..100000和‘0.100000(作为字符串填充到五个字符)中的数字后面,分别使用:
strVal = util.printf("%5d",getRangeVal(10000, 99999));
strVal = util.printf("%05d",getRangeVal(0, 99999));发布于 2017-03-01 01:47:47
如果您需要用5位数在0到99 999范围内生成一个数字,则需要保留前导零。
考虑使用toFixed来保留前导零(如果字符串是OK的):
console.log( Math.random().toFixed(5).replace(/\d\./,'') );
您也可以使用一个函数来填充指定数量的前导零,但这似乎比所需的要复杂一些。
然而,如果你想要的数字在10,000到99,9999之间,帕克斯辉密罗有答案。
https://stackoverflow.com/questions/42521646
复制相似问题