【发布时间】:2020-02-08 23:59:34
【问题描述】:
给定介于 0 和 1 之间的任何数字,例如 0.84729347293923,有没有一种简单的方法可以在不使用字符串或正则表达式的情况下将其变为 84729347293923?我可以考虑使用循环,这可能并不比使用字符串差,因为它是O(n),n 是位数。但是有没有更好的方法?
function getRandom() {
let r = Math.random();
while (Math.floor(r) !== r) r *= 10;
return r;
}
for (let i = 0; i < 10; i++)
console.log(getRandom());
【问题讨论】:
-
您提供的数字不是整数。整数是一组整数和零。你可以把它弄圆,也可以把它弄平。数学上没有其他选择,
-
您想避免字符串操作的任何特殊原因?切掉“0”。真的很简单
-
或者至少可以使用字符串的长度吗?
-
如果数字总是小于 1,则将其视为百分比并乘以 100。然后将其截断或四舍五入。即使它不小于 1,也适用相同的规则。
-
@GetSet 得到 84,而不是 84729347293923。
标签: javascript