したがって、2の整数で除算されたときに余りを残さずに与えられたintに9 9+ 1の最も近いものを返す関数を作成する方法は?与えられたintに最も近い偶数を見つける方法は? (与えられた11のリターン12)
答えて
number % 2 == 0?number:number+1
もう一つの方法は、(number>>1)<<1
ですが、私はネガ/リトル/ビッグエンディアンについてはよく分かりません。
'(number >> 1)<< 1'は負の値のUBを持ちます。 ( '' ''のみ '' 'は実装定義ですが、' << 'は未定義です;それは符号付きの算術オーバーフローです) –
if (x %2 == 0) return x; else return x+1;
?
私は通常(number+1) & ~1
ある好む方法、 しかし誰もがそのイディオムを認識しているわけではないので、あなたのaudi ence。
特に負の整数の場合、CとC++の非2の補数の実装ではイディオムは認識されません(負の符号+絶対値の代わりに奇数の負の数値が下がります、負の奇数を1の補数で奇数にする)ので、負の入力が許可されている場合には完全に移植可能ではありません。
移植性のある回答は(number % 2 == 0) ? number : number+1;
であり、コンパイラが最適化を心配するようにします。
INT_MAX
の結果が何であるかは定義されていないことに注意してください。これは奇数ですが、さらに大きな値のint
もありません。
もう一つの "可搬性"の可能性はC99では正の無限大と負の無限大に向かって正の値を丸める 'number +(number%2)'です。 – caf
0から丸めたい場合は、カフェの答えが最適です。しかし、丸めたい場合は、 '&'や厄介な条件文を使う必要があります。 –
ここでの回答のほとんどは、移植性や過剰条件文を持っているのどちらかであるので、ここでは、迅速かつポータブル答えは:unsigned
へ
number += (int)((unsigned)number & 1)
場合は、予想通り、ビット単位-とが定義されていることを保証し、そしてキャストint
(ビット単位の可能な値と0または1の両方の可能な値がint
に収まるため、明確に定義されています)がunsigned
に昇格するのを防ぎます。この結果、int
結果をnumber
に割り当てます。
:
number = Math.round(number * 0.5f) * 2; //Closest (up for middle)
number = Math.ceil(number * 0.5f) * 2; //Always Up
number = Math.floor(number * 0.5f) * 2; //Always Down
を少し遅れてパーティーに、これは、この問題ではない
n += (n % 2);
- 1. 与えられた色の近くの色を見つける
- 2. C++与えられた値に最も近い値を持つマップのキーを見つける方法
- 3. Pythonの与えられた点から近点を見つける方法
- 4. 与えられたサブネットのネットワークアドレスを見つける方法は?
- 5. 与えられた分母の範囲に対してPiの最も近い近似を見つける
- 6. 与えられたリストのanagramsを見つける方法
- 7. 与えられたテーブルの子テーブルを見つける方法
- 8. 与えられた値の最も近い値
- 9. 与えられた出力で最大値を見つける
- 10. 最も近い次の/前の倍の値を見つける方法(与えられた数値に対してnumeric_limits ::εを見つける方法)
- 11. 与えられた緯度/経度の最も近いノードを見つけるためのSpatialite SQLクエリ
- 12. データポイントのセットが与えられた場合、「最も近い」ものを見つけよう
- 13. Java与えられた数字の正の約数を見つける方法
- 14. 与えられた範囲の最大レコードを見つける方法
- 15. 与えられた16進数のxor key/algorithmを見つける方法は?
- 16. 与えられた式の上限を見つけるには
- 17. は、与えられた数
- 18. 2D numpy配列の角度が与えられた最も近いアイテムを見つける
- 19. は、最も近いdatetimeと与えられた終了日時phpを比較して見つけます。
- 20. 与えられたデータから現在の場所から最も近い場所を見つける方法を教えてください。
- 21. 2D空間内の与えられた点をカバーする最も狭いバンドを見つける方法は?
- 22. 関数を与えられた最小重みのパスを見つける
- 23. リストの最良解で与えられた数のカウントオカレンスを見つける
- 24. 与えられたファイルに与えられたdiffについてGITがコミットする方法は?
- 25. 与えられた線に垂直な点を見つける
- 26. 与えられたときにyを見つける
- 27. 与えられた集合から与えられた数(繰り返しが許される)を合計するすべての方法を見つける
- 28. 与えられたXMLファイルで最大のノードを見つけるには?
- 29. 与えられたデータの間の一致を見つける
- 30. 与えられた日付に最も近いファイルを取得する
きれいなソリューションです。一意に指定されます。 10は12に近い11に近いです。あなたはどれが欲しいですか?そして負の数値はどうですか?そして、入力積分または浮動小数点ですか? –
@David:入力は明らかに積分的ですが、残りのコメントは+1です – Cameron
答えがない質問に対しては、すべて投票済みの回答があるとは思えません! –