タグ

仕様書とプログラミングに関するalcusのブックマーク (2)

  • long doubleの話 - Qiita

    C言語の long double は環境によって実体がまちまちである。この記事ではその辺をまとめてみる。 C言語の規格での話 まず、C言語の規格で浮動小数点数がどういう扱いになっているか確認しておく。 C言語では、多様な環境に対応するため、浮動小数点数がIEEE 754に準拠しない環境も考慮している。符号、基数、指数部、仮数部がある点はIEEE 754と同じだが、 基数 $b$ は1より大きい整数(IEEE 754では2または10のいずれかとしている) 指数部の範囲 $\mathit{emin}$, $\mathit{emax}$ の関係は特に規定されていない(IEEE 754では $\mathit{emin}=1-\mathit{emax}$ としている)。 0, 無限大、NaNは符号付きでも符号なしでも良い。 非正規化数がなくても良い。 となっている。 <float.h> ではその環境

    long doubleの話 - Qiita
  • ECMAScriptの浮動小数点数の丸め仕様がスゴい - hnwの日記

    ECMAScriptの浮動小数点数の丸め関数である Number.prototype.toFixed() について調べてみたところ、浮動小数点数をわかっている人が作った硬派な仕様だと感じたので、解説してみます。 浮動小数点数の丸めの善し悪しについて 私はプログラミング言語の浮動小数点数の丸め処理に興味があり、過去に関連記事を30以上書いています。こうした活動から得られた知見として、良い丸め関数には次のような性質があると考えています。 仕様がシンプルで直感的であること 仕様が抜け漏れなく文書化されていること バグを作り込みにくい仕様であること どれも良い関数の一般論のような話ですが、丸め処理に限って言えば簡単な話ではありません。そもそも浮動小数点数の性質が人の直感に反するため利用者にとっても実装者にとっても罠が多く、結果として上の条件を満たせないことが多いのです(私が面白いと感じるポイント

    ECMAScriptの浮動小数点数の丸め仕様がスゴい - hnwの日記
  • 1