亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否存在僅允許顯示特定類型數字的“if 語句”?

是否存在僅允許顯示特定類型數字的“if 語句”?

慕妹3146593 2023-02-17 16:43:51
我在 w3schools.com 上找不到比較運算符,它檢查生成的數字是否等于某種類型的數字。有沒有一種方法可以if statement在不改變innerHTML參考屬性的情況下制定一個 .例如,在我的代碼的以下過于簡化的版本中:它應該只顯示像 6 、 3.1 、 4.05 、 53.65 這樣的數字(這些數字在小數點后有 2、1 或沒有數字,并且以 0.05 步計算)function F1() {  x = document.getElementById("x").innerHTML = Math.random() * 100;  if (x !== "0.05") {    F1();  }  if (x !== "0.1") {    F1();  }  if (x !== "1") {    F1();  }}<button onclick="F1()"> New </button><p id="x"></p>
查看完整描述

2 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

使用取模運算符

但是,除以分數 (.05) 可能會產生不完美的結果,因此最好乘以 20 并檢查是否有分數提醒(模數 1)。


@Thomas Sablik 的回答也有效,并解釋了乘以 20。


const isPoint05 = x => x * 20 % 1 === 0;


const test = (...args) => args.forEach(x => console.log(x, isPoint05(x)));


test(6, 3.1, 4.05, 53.65, 3.254, 6.22, 7.77, 7.33);


為了說明分數除法的挑戰(取決于 JavaScript 實現,我在 chrome 上得到 0.049999999999999614):


console.log(7 % 0.05);


查看完整回答
反對 回復 2023-02-17
?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

您可以將數字乘以 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為 false),例如:


0.05 * 20 = 1

1.25 * 20 = 25

和其他數字不是整數(Math.round(x * 20) !== x * 20是真的),例如:


0.04 * 20 = 0.8

1.251 * 20 = 25.2

但是將這個 if 語句與 with 一起使用是一個壞主意,因為生成太多其他Math.random數字的可能性很高,以至于遞歸會導致堆棧溢出。Math.random


更好的方法是生成您想要的數字


x = Math.round(Math.random() * 20 * 100) / 20


查看完整回答
反對 回復 2023-02-17
  • 2 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號