オーバーフローなしでジュリアで10 ^ 19を保存する方法


8

Juliaの変数に数値10 ^ 19を保存しようとしています。

私はそれが溢れているのを知っています、しかし私は問題のようなことをするBigInt(10^19)Int128(10^19)解決することを考えましたが、それはしません。

何かご意見は?

Juliaのオーバーフロー動作を確認する

回答:


13

JuliaはデフォルトでInt64演算を行うので、10 ^ 19はデフォルトのInt64としてオーバーフローしてから、より大きな型にキャストする括弧が検出される前にオーバーフローします。試す

Int128(10)^20 == BigInt(10)^20 == big"10"^20

big(10)^20も動作します。
DNF

副次的なコメントとして:ジュリアは、10 ^ 19などの範囲定数が適合する範囲を検出し、定数に適合するのに十分な大きさの最小の型、または失敗しない他のヒューリスティックを使用するのに十分賢い可能性があります。
Trilarion

確かに、私の推測では、これはパフォーマンスに影響を与えるため、ユーザーにダウンストリームでプッシュします。
logankilpatrick

それはそれよりも少なく、概念的にはintのように見えるような単純なルールを持っている方がいくつかの点でよりクリーンです。それはintです
Oscar Smith
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.