Javascript 是否有只允许显示特定类型数字的“if语句”?
我在w3schools.com上找不到比较运算符,它检查生成的数字是否等于某一类型的数字 甚至有没有一种方法可以在不更改引用的Javascript 是否有只允许显示特定类型数字的“if语句”?,javascript,math,Javascript,Math,我在w3schools.com上找不到比较运算符,它检查生成的数字是否等于某一类型的数字 甚至有没有一种方法可以在不更改引用的innerHTML属性的情况下制定if语句 例如,在我的代码的以下过于简化的版本中: 它应该只显示像6、3.1、4.05、53.65这样的数字 (这些数字在小数点后有2、1或没有数字,并按0.05步计算) 函数F1(){ x=document.getElementById(“x”).innerHTML=Math.random()*100; 如果(x!=“0.05”){
innerHTML
属性的情况下制定if语句
例如,在我的代码的以下过于简化的版本中:
它应该只显示像6、3.1、4.05、53.65这样的数字
(这些数字在小数点后有2、1或没有数字,并按0.05步计算)
函数F1(){
x=document.getElementById(“x”).innerHTML=Math.random()*100;
如果(x!=“0.05”){
F1();
}
如果(x!=“0.1”){
F1();
}
如果(x!=“1”){
F1();
}
}
新建
您可以将数字乘以20并四舍五入:
if (Math.round(x * 20) !== x * 20) {
// not counted in 0.05 steps, eg. 1.234
} else {
// counted in 0.05 steps, eg. 1.25
}
此if语句检查“这些数字在小数点后是否有2、1或没有数字,并且以0.05步数计数”,因为以0.05步数乘以20的数字是整数(Math.round(x*20)!==x*20
为假),例如:
其他数字不是整数(Math.round(x*20)!==x*20
为真),例如:
但是将此if语句与Math.random
一起使用是一个坏主意,因为Math.random
生成的其他数字太多,递归将导致堆栈溢出
更好的方法是生成您想要的数字
x = Math.round(Math.random() * 20 * 100) / 20
使用模运算符
但是,除以分数(.05)可能会产生不完美的结果,因此最好乘以20并检查是否存在分数提示(模数1)
@托马斯·萨布利克的答案也是正确的,并解释了乘以20的原因
const isPoint05=x=>x*20%1==0;
const test=(…args)=>args.forEach(x=>console.log(x,isPoint05(x));
测试(6,3.1,4.05,53.65,3.254,6.22,7.77,7.33)代码>为什么要将其乘以20?我很好奇。(主题外)如果你不使用lnlinestyle=”“
(希望你不会),那么请停止在*=”
处理程序上使用内联。这是切分做调试。JS应该只在一个地方,那就是您的脚本文件或标记。停止使用学校作为你的学习资源。到目前为止(2020年),它们仍然充斥着蹩脚的示例、无关的代码样本和证书。直接生成正确类型的数字比一遍又一遍地检查完全随机的数字要简单得多(而且可能需要很长时间才能找到你想要的那类数字)。x=(0.05*Math.round(Math.random()*100/0.05)).toFixed(2)
0.04 * 20 = 0.8
1.251 * 20 = 25.2
x = Math.round(Math.random() * 20 * 100) / 20