問題タブ [extended-precision]
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.
clojure - What's the philosophy concerning the use of floating point values in Clojure?
Currently I'm working with Clojure-on-top-of-the-JVM.
JVMの浮動小数点機能を公開するJava 言語では、(正確に) IEEE-754 32 ビット単精度(Java "float") および64 ビット倍精度(Java "double") 表現とJVM は、計算中に「拡張精度」実装 (「拡張倍精度」の場合は 80 ビット、一部のプログラミング言語では「長倍精度」とも呼ばれます) を使用する可能性があります。今のところ、半精度または 4 倍精度についての言葉はありません。
Clojure-on-top-of-ECMAScript (つまり、ClojureScript) の場合、単一の基礎となるnumber typeがあり、たまたま IEEE-754 64 ビット倍精度浮動小数点です。
Clojure-on-the-JVM の場合、浮動小数点が予想されるすべての場合で「double」の使用が推奨されるようです。与えられたものが単精度浮動小数点であるかどうかをテストする方法さえありません。float?
(おそらく驚くべきことに)そのものが何らかの種類の浮動小数点値であるかどうかをテストするためです。不自然なことに、「float にキャスト」する という関数がありますfloat
。
したがって、プログラマーは精度の観点から考えず、Clojure に選択させることが推奨されます。Clojure は全体を通して IEEE binary64 を選択します。これが本題でしょうか。