問題タブ [bignum]

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 に答える
1521 参照

php - UnixタイムスタンプとJavaScript時間。大きすぎる!

私はjQuery用のflotグラフライブラリを使用しており、任意の時系列にjavascript時間を使用しています(1970年1月からのミリ秒です。Unix時間はです)。

私の現在のコードは次のようになります。

これにより、Unixタイムスタンプの配列が得られます。ループ内でJavaScriptのデータを準備したいのですが、試してみると

数が多すぎて「[-2147483648]」を吐き出します。配列に保持できる変数の「型」をbignumなどに変更する必要がありますか?

ありがとう!

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

implementation - 非常に長い小数の算術演算

私はいつも興味がありました: どうすれば非常に長い 10 進数で算術演算を実行できますか? たとえば、円周率を小数点以下 3000 位まで計算する (特に命令型言語の場合)。

0 投票する
5 に答える
6771 参照

perl - Perlで大きな数をスプリントするにはどうすればよいですか?

Windows 32 ビット プラットフォームでは、99,999,999,999 という大きな値を持つことができますが、それ以上の値を持つことはできませんでしたが、これは予想外でした。sprintf("%011d", $myNum)それらを試みると、オーバーフローが出力されます: -2147483648 。

この場合、コードを大幅に変更する必要があるため、BigInt モジュールを使用できません。sprintf("%011s", $numero)マイナス記号が正しく処理されないため、文字列としてフォーマットを管理できません。

どうすればこれを管理できますか? パック/アンパックは役に立ちますか?

0 投票する
5 に答える
8354 参照

c - 本当に大きな数を2進数から10進数に変換して印刷します

2進数を10進数に変換する方法を知っています。私は少なくとも2つの方法を知っています:テーブルとパワー;-)

2進数を10進数に変換して、この10進数を出力したいと思います。さらに、私はこの「10進数」には興味がありません。印刷したいだけです。

しかし、上で書いたように、私は2進数を10進数に変換する方法を2つしか知らず、両方とも加算が必要でした。したがって、バイナリで1または0の値を計算し、それを記憶されている値に追加します。これは薄い場所です。私は本当に本当に大きな数(1と64のゼロ)を持っています。変換中は、中間結果を「変数」に配置する必要があります。Cでは、「int」型があります。これは4バイトのみで、10^11以下です。

そのため、2進数から10進数に変換するときに、中間結果を保存するのに十分なメモリがありません。上で書いたように、私はその小数には興味がなく、結果を出力したいだけです。しかし、私はそれを解決する他の方法を見ていません;-(バイナリから「ただ印刷する」ための解決策はありますか?

または、中間表現にBCD(Binary Coded Decimal)のようなものを使用する必要がありますか?クロスプラットフォームではないので、私は本当にこれを使いたくありません(Intelのプロセッサには組み込みの機能がありますが、他の場合は独自の実装を作成する必要があります)。

ご意見をお聞かせいただければ幸いです。しばらくお待ちいただきますようお願いいたします。

言語:C。

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

perl - Perl bignum から数字を取得するにはどうすればよいですか?

Perl には非常に大きな数があります。私は「ビッグナム」を使用しています。この大きな数字から 1 桁を抽出するにはどうすればよいでしょうか。たとえば、次のような数字があり、末尾から 3 桁目を取得する方法は次のとおりです。

1029384710985234058763045203948520945862986209845729034856

-> 8

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

c++ - C ++でProject Eulerの問題を解決するのに最適なbignumライブラリ?

私はまだ学生ですが、プロジェクト オイラーはとても楽しいと思います。

質問には、プリミティブ型よりも大きな計算が必要になる場合があります。私はあなたがそれを実装できることを知っていますが、私はこれを行うのが面倒です.

だから私はいくつかのライブラリを試しました、

MAPM :: 非常に優れたパフォーマンスですが、整数かどうかをチェックする可能性がある大きな浮動小数点数しか提供しません。入力を受け入れるには非常に適していますが、出力を提供するには厄介で、Visual C++ 2008 Express で魔法のようにコンパイルされます。

bigint :: 小さいものですが、多くの部分で再設計が必要です。使い方はとても簡単ですが、パワーが非常に限られており、他のものに比べて非常に遅いです。大きな整数のみ。

ttmath :: 今まで試した中で最も美しいもの!, いくつかのファイルを含めるだけで、信じられないほどのパワー/シンプルさが得られます. Visual C++ 2008 Express で魔法のようにコンパイルします。固定長の数値を提供するため、高速です。C++ のメタプログラミングを使用して構築されています。私が見る唯一の欠点は、実行時に数値の長さが任意ではないことですが、コードを書くと非常に簡単に1024Kの数値を持つことができます。

これには、signed、unsigned、float の 3 つのタイプがあります。

VC2008 Express で gmp をコンパイルしようとしましたが、失敗しました。私はそれが最高であることを知っていますが、VC2008 Express で初心者が簡単にコンパイルできる場所はありません。また、VC で gmp をコンパイルするためのチュートリアルを参照していただければ幸いです。

編集 :: VC 2008 を使用して gmp をコンパイルする方法を知っている場合は、私に説明して賞金を獲得してください :)

EITD :: 私は正しい用語を使用していなかったようです. Windows 用の魔法の GMP を紹介します! VC 2008 で動作します:) MPIR

0 投票する
5 に答える
3391 参照

java - エラトステネスのふるい問題:本当に大きな数を処理する

私はエラトステネスのふるいを使ってスフィアのオンラインジャッジプライムジェネレーターを解いています。

私のコードは、提供されたテストケースで機能します。しかし..問題が明確に述べているように:

入力は、1行のテストケースの数tから始まります(t <= 10)。次のt行のそれぞれに、スペースで区切られた2つの数値mとn( 1 <= m <= n <= 1000000000、nm <= 100000)があります。

非常に大きな数を処理するときにメソッドInteger.parseInt()が例外をスローし、オンラインジャッジが例外がスローされていることを示していたので、コード内のすべてのケースparseIntをに変更しました。parseLong

さて、mとnの値が小さいNetbeans6.5では問題なく動作しています。

入力+出力:

しかし、JCreatorLEはこれを言っています:

ここでは整数のオーバーフローはありませんが、なぜjcreatorが文句を言うのでしょうか。

境界テストケースを考慮すると、プログラムはNetbeansにも影響を及ぼします。

問題ステートメントのこれらの巨大な整数をどのように処理できますか?

編集:提案により、BitSetのブール配列を変更しましたが、まだOutOFMemoryError:を取得しています。

入出力:

0 投票する
5 に答える
2425 参照

c - データ型が完全な数値を保持できない場合は、16進数を10進数に変換します

私はCでPICマイクロプロセッサを使用しています。これは16Fであるため、32ビットを超える整数を保持できません(符号なしint32は使用可能な最大のデータサイズです)

リーダーから、5バイトのIDコードを受け取ります。それを送信するには、BCDに1桁ずつエンコードする必要があります。データサイズよりも大きいため、文字列にスプリントできず、処理できません。操作が定義されていないため、分割できません。

私は可能な解決策を見つけることができません、誰かが以前にこれに対処したことがありますか?

編集:

一連の5バイトで番号を受け取ります。

FF-FF-FF-FF-FF

10進数に変換する必要があります

0123456789012

(13桁、10進数で256 ^ 5の長さ)RS232を介して送信します。2番目の関数(ASCIIを取得して送信します)私はすでにそれを機能させていますが、それを使って何かをする前に、完全な数値の文字列表現が必要です。