12
A
答えて
17
通常の数学関数の「自動促進」バージョンです。
user> (* Long/MAX_VALUE 2)
ArithmeticException integer overflow clojure.lang.Numbers.throwIntOverflow (Numbers.java:1501)
user> (*' Long/MAX_VALUE 2)
18446744073709551614N
出力が大きすぎると、入力よりも大きなデータ型が返されます。 これはClojureの早い段階ではデフォルトの動作でしたが、数学演算の出力がデータ型をオーバーフローさせた場合は例外をスローするように変更されました。これにより数値的なパフォーマンスが向上し、一般的にバグの発見に役立ちました。それ以来、5年ほどの間に、この変更について驚くほど少数の人々が何かを壊していると訴えてきました。これはほとんど常にバグであるため、オーバーフローで例外をスローする動作を保つことに決めました。
実際には、ほとんどの場合、BigIntegerとBigDecimalを使用する必要があり、通常の関数をこれらのデータ型で使用できます。この例では
user> (* Long/MAX_VALUE 2N)
18446744073709551614N
私は、通常の*
機能を使用し、それをタイプのBigIntegerのだった引数を渡された(つまり、2N
でN
は、Clojureは、読者に何を意味するかだ)
いくつかの例があります。あなたが実際にサイズを知らずに任意のサイズの番号で作業する必要がある場合、これらの機能は便利です。これまでの私の例のほとんどは、StackOverflowの階乗的な例です。
あなたが本当にあなたの数学の操作は、あなたが明示的に危険な数学関数を使用することができますオーバーフローする場合:
user> (unchecked-add Long/MAX_VALUE 2)
-9223372036854775807
関連する問題
- 1. Clojure:関数の引数リストで[_]は何をしますか?
- 2. パイソン:file.read()関数のエラー - UnicodeDecodeError時? file.read()関数はUnicodeDecodeError時で終わるので
- 3. 記載されている数学関数の一般名は何ですか
- 4. 幾何学関数のインデックス
- 5. Clojure(スクリプト)のプラットフォームに依存しない数学関数
- 6. この例で使用する数学は何ですか?
- 7. Lisp/Schemeで '(アポストロフィ)とは何ですか?
- 8. 関数を数学関数で表現する
- 9. Clojureでone-arg関数を複数引数に結合する
- 10. Clojure関数を分解することは可能ですか?
- 11. 数学関数を別の数学関数に適用する
- 12. Clojureでは、無名関数内で無名関数を定義することは可能ですか?
- 13. clojureで関数を呼び出す
- 14. 代わりに、OOPのグローバル関数は何ですか?
- 15. Clojure関数リテラル
- 16. Clojureでは、関数、引用された関数とシャープクォート関数の違い
- 17. Scalaではデフォルトでインスタンス変数をpublicにする哲学は何ですか?
- 18. 数学関数sqrt。何が欠けていますか
- 19. 数学関数の数値引数ではない
- 20. カラーホイールの背後にある数学は何ですか?
- 21. CSSフィルターの背後にある数学は何ですか?
- 22. SymPyで数学関数を定義する方法は?
- 23. CAPLで数学関数をインポートするには
- 24. z3py:Pythonの数学関数でbitvecをキャストする方法は?
- 25. gccでインテルの数学関数ライブラリを使用するには?
- 26. アポストロフィで単語を数えないCountif関数
- 27. Openlayers 3のfeature.getStyle()関数で使用できる関数は何ですか?
- 28. PHPのSUBSTR()関数は、ここで終わり
- 29. ズームレベルに関係なくマップに5dp円を描く数学は何ですか?
- 30. Clojureでは、マクロはどのように関数と異なるのですか?
典型的な答えを。正確で非常に徹底的。 – amalloy
完了するには: '* unchecked-math *'も 'true'に設定できます – ClojureMostly