给定一个浮点数,帮我写一个函数,生成一个修改过的小数位数百分之一的数字。
例如:
4.32 => 4.38
5.10 => 5.11
8.37 => 8.31
以下是不以下
4.32 => 4.29
9.99 => 10.00
答案 0 :(得分:3)
试试这个:
function simNumber(num) {
return Math.floor((Math.floor(num * 10) + Math.random()) * 10) / 100;
}
答案 1 :(得分:2)
更新:
var num = 3.21;
var newNum = (Math.floor(num*10) + Math.random())/10;
var newNumRounded = Math.floor(newNum*100)/100;
答案 2 :(得分:2)
function similar(num) {
var result = num;
while (result == num) {
result = parseFloat(
num.toFixed(2).substring(0,3) +
Math.random().toString().substr(2,1)
);
}
return result;
}
JSFiddle:http://jsfiddle.net/n3dst4/8KLFa/
答案 3 :(得分:1)
此函数用随机数字[0,9]替换百分位数字,然后在选择相同数字的情况下进行拒绝抽样。应该可以正常工作:
function randomHundredths(x) {
var r, y;
do {
r = Math.floor(Math.random() * 10); // [0, 9]
y = Number(x.toFixed(2).replace(/\d$/, r));
} while (y == x);
return y;
}
答案 4 :(得分:0)
这有效:
function simNumber(num) {
return parseFloat(num.toString() + Math.random().toString().substr(2,1));
}
答案 5 :(得分:-1)
这应该可以解决问题
function simNumber(num){
return Math.floor(num) + Math.random()
}
值得注意的是,随机函数不一定会将值返回到小数点后两位。
澄清:Math.random()返回> 0和< 1