簡體   English   中英

javascript中的下一個奇數

[英]Next odd number in javascript

要查找輸入的下一個奇數,請使用以下代碼:

a=5.4; // Input
b=Math.ceil(a); // Required to turn input to whole number 
b=b+(((b % 2)-1)*-1); // Gives 7

細胞舍入功能是必需的。

這是安全的嗎?有更緊湊的方法嗎?

編輯 :當輸入已經是一個奇數整數時,沒有任何反應。 例如5.0將返回5

怎么樣

b += b % 2 ^ 1;

除以2后的余數將始終為0或1,因此^運算符(異或)將其翻轉為相反的值。

(另外, (b & 1) ^ 1也可以。哦,我猜b = b ^ 1適用於正整數,但對於大整數來說會有問題。)

在提問者的要求下:

實現它的最緊湊的方法是

b = Math.ceil(a) | 1;

首先使用ceil()獲得不小於a的最小整數,然后通過按位或1來獲得不小於ceil(a)的最小奇數,以確保設置最后一位而不改變任何其他內容。

要獲得嚴格大於a的最小奇數,請使用

b = Math.floor(a+1) | 1;

注意事項:

位運營商上的Javascript符號的32位整數進行操作,所以值a必須小於或等於2^31-1 ,RESP。 第二個嚴格小一些。 此外, a必須大於-2^31-1

如果有符號整數的表示不是兩個補碼,而是一個補碼或符號和大小(我不知道Javascript是否允許,Java不是,但它在C中是可能的), a必須的值大於-1 - Math.ceil(a)的結果。 Math.floor(a+1)必須是非負的。

不是很短,但這更清晰:

a=5.4;
b=Math.ceil(a);
b = b % 2 ? b : b + 1;

嘗試這個:

a = 5.4
b = Math.ceil(a)
b = b%2 == 0 ? b+1 : b
y = Math.ceil((x - 1)/2)*2  + 1

http://www.intmath.com/functions-and-graphs/graphs-using-jsxgraph.php上執行fn

沒有Math.ceil() ,可以這樣做:

b = a + a % 2 | 0 + 1;

NB。 我認為5.0下一個奇數是7

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM