問題タブ [integer-arithmetic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2321 参照

c# - 算術オーバーフローをチェックし、オーバーフロー カウントを取得しますか?

算術オーバーフロー (またはアンダーフロー) を検出し、オーバーフロー カウントを取得する最も適切な方法は何でしょうか?

理解を容易にするために を使用しますがbyte、これはintやその他の基本的な整数型でも同じです。ここで、値が 240 で、それに 24 を足したいとします。明らかに算術オーバーフローです。キーワードを使用すると、checkedこれは少なくとも簡単に検出できます...

...例外をスローすることによって。

これは私が現在使用しているものです。

ただし、この例外処理はあまり好きではありません。通常、例外は非常にコストがかかるため、最初から回避したいと考えています。とにかく、これはBoneheaded-Exceptionのように思えます。これを事前に検出するためにできる算数の魔法はありますか?

0 投票する
1 に答える
42 参照

arrays - 配列を含む整数を生成する数学的方法 (順列)

一部の整数のすべてのバリアントを含む配列を生成する数学関数、いわゆる順列が必要です。たとえば、次のようになります。

管理可能であれば、最大で 100 個の {{1,2,3,....100},{...}} またはそれ以上の配列を生成できるはずです。

そのような配列を生成できる数式またはアルゴリズムを知っていますか?

0 投票する
2 に答える
2790 参照

java - Java8 符号なし算術演算

Java 8 は、符号なし整数をライブラリでサポートしていると広く報告されています。ただ、使い方やどこまでできるのかを解説した記事はないようです。

Integer.CompareUnsigned のようないくつかの関数は簡単に見つけることができ、期待どおりの動作をするようです。しかし、unsigned long の範囲内ですべての 2 の累乗をループする単純なループすら書き損じています。

出力を生成します

この単純なタスクに何か不足していますか、それとも外部ライブラリがまだ必要ですか?

0 投票する
6 に答える
2358 参照

java - 1004L~1000L(または1006L~1010L)のラウンドロング

私が持っているとしますLong someLong = 1004L。これを に切り下げるには、どの効率的な方法を使用でき1000Lますか? 私は実際にはそれを知らないsomeLong == 1004Lので、単純にできないことに注意してくださいsomeLong -= 4L;。一般化可能な方法が必要です。また、 each5の代わりに each10に丸める機能も必要です。たとえば、丸める関数1005Lです ( で丸めると、切り捨て5ではなく切り上げられるため)。

より多くの例..それは私が持っている可能性があり、私が必要とする意味に1926L丸めたい. または、必要な意味に丸める必要があります。51925L101930L

0 投票する
13 に答える
33784 参照

c++ - 数値が 10 の倍数であるか、特定の範囲内にあるかを判断する

プログラムで必要なループがいくつかあります。疑似コードを書き出すことはできますが、それらを論理的に記述する方法が完全にはわかりません。

私は欲しい -

私の質問にこれ以上意味がある場合、これはヘビとはしごのボードゲーム用です。

モジュラスを使用する必要がある最初のifステートメントを想像します。if (num == 100%10)正しいでしょうか?

2つ目はよくわからない。のように書くこともできますがif (num > 10 && num is < 21 || etc.)、それよりもスマートなものが必要です。

0 投票する
3 に答える
5549 参照

c - 非常に大きな数の整数平方根を桁ごとに求める効率的なアルゴリズムは何ですか?

数千桁の整数の平方根を求めるプログラムを作成する必要があります。このような大きな数を格納および分割するためのデータ型がないため、Newton Raphson を使用できません。数値を格納するためにCで長い配列を使用しています。おそらく数字を反復して平方根を見つけるアルゴリズムはありますか?

編集:

GMP などの外部ライブラリを使用できません。

0 投票する
4 に答える
151 参照

math - Finding the tenth's place equivalent of an integer

How does one, computationally and dynamically, derive the 'ths' place equivalent of a whole integer? e.g.:

  • 187 as 0.187
  • 16 as 0.16
  • 900041 as 0.900041

I understand one needs to compute the exact th's place. I know one trick is to turn the integer into a string, count how many places there are (by how many individual characters there are) and then create our future value to multiply against by the tenth's value derived - like how we would on pen and paper - such as:

But what is a non-string, arithmetic approach to solving this?

0 投票する
1 に答える
413 参照

haskell - divMod が正の剰余を保証するのではなく、除算を切り捨てるのはなぜですか?

ほとんどの数学の学生と Haskeller がよく知っているユークリッド除算定理は、次のように述べています。

2 つの整数 a と b が与えられ、b ≠ 0 の場合、a = bq + r かつ 0 ≤ r < |b| となる一意の整数 q と r が存在します。

これにより、商と剰余の従来の定義が得られます。この1992 年の論文は、それらがプログラミング言語で実装するのに最適なものであると主張しています。divModでは、被除数を常に負の無限大に丸めるのはなぜでしょうか?

div と quot の正確な違いdivModは、すでにかなりの余分な作業を行っていることを示していquotRemます。それを正しくするのはそれほど難しいことではないようです。

コード

divModの実装に基づいて、次のユークリッド スタイルの実装を作成しましたGHC.Base。私はそれが正しいと確信しています。

これは心地よいユークリッドの結果を生み出すだけでなく、実際には GHC コードよりも単純です。明らかに、多くても 2 回の比較を実行します (GHC コードの 4 回とは対照的に)。

実際、これはおそらく、私よりもプリミティブについて詳しい人が手を加えなくても、完全にブランチレスにすることができます。

ブランチのないバージョンの要点 (おそらく、もっと詳しい人ならもっと効率的にできるはずです)。