タグ

浮動小数点に関するdelegateのブックマーク (8)

  • PHPで任意精度演算を行って「正しい」金額計算をする方法 / Perform arbitrary precision arithmetic in PHP to achieve "accurate" monetary calculations

    PHPerKaigi 2023 • Day 1での登壇資料です。 https://phperkaigi.jp/2023/ https://fortee.jp/phperkaigi-2023/proposal/3630baf7-f540-4dba-b10a-89cdbddf62da

    PHPで任意精度演算を行って「正しい」金額計算をする方法 / Perform arbitrary precision arithmetic in PHP to achieve "accurate" monetary calculations
  • 【PHP】小数点演算には気をつけよう | 株式会社ウイングドア

    今更感の強い話題かもしれませんが、PHPで小数点計算を実行する際は、当に正しい数値になっているのか気をつけましょうという話です。 <?php $records = array( [ "date" => "2021/01/01", "amount" => 13.05 ], [ "date" => "2021/01/02", "amount" => 17.05 ], [ "date" => "2021/01/03", "amount" => 14.3 ], ); $totalAmount = 0; foreach ($records as $record) { $totalAmount += $record['amount']; } echo(number_format($totalAmount, 15)); // 結果:44.400000000006

    【PHP】小数点演算には気をつけよう | 株式会社ウイングドア
  • いまさら聞けないIT用語集 浮動小数点演算の単精度と倍精度って? (1/3)

    今回はジサトラショータ氏の「浮動小数点の単精度と倍精度って何?」という質問に答えよう。最近はこれに倍々精度や半精度も使われるようになっているので、非常にわかりにくかったりする。 計算式の桁数を抑えられる 浮動小数点 そもそもコンピューターは数字の演算に関して、整数演算と小数演算の2つに分けて実装しているのが普通である。これは「何桁まで処理する必要があるか」というニーズが根的に違うためだ。 整数の場合、普通(なにをもって普通というかはアレだが)は10桁くらいの計算ができれば十分である。もちろん企業における会計処理などでは10桁では足りない(売上1兆円を表現するのには12桁が必要だ)が、そういう規模の大きな処理は別途考えることにすれば、9桁か10桁あれば大体用が足りる。 ところが小数の場合、そもそも何桁まで処理できれば足りるか、というのはあまりにケースバイケースすぎる。たとえば利息の計算。1

    いまさら聞けないIT用語集 浮動小数点演算の単精度と倍精度って? (1/3)
  • [C#] 浮動小数点数型 double と誤差 ~double の内部表現~ (プログラミング C# - 翔ソフトウェア (Sho's))

    ※ C# Advent Calendar 2015 の12月19日の記事。 前の日の記事: 真・Roslyn for Scripting! あなたのアプリケーションにもC#スクリプトを!! - kekyoの丼 次の日の記事: Code整形でちょっと役立つCodeMaidの利用方法 C 等を使用している場合と異なり、C# では、それがメモリ上でどのような姿をしているのかを意識する機会は少なめだ。 C の場合、型とメモリ上のビットの並びを意識したプログラミングをする機会が多い。ビット演算も比較的良く使われる。 それに比べると、C# や Java などの言語だけを使っている場合は、そうした機会は割と少ない。 しかし、C# 等であっても、やはりそれぞれの型がメモリ上でどのようにして値を保持しているかを知っていることが有効な場合がある。 例えば、double の演算では誤差が生じることが多いが、do

  • 浮動小数点数の二段階丸め誤差 - hydrakecat’s blog

    さいきん『浮動小数点数小話』という同人誌を読んでFMA (Fused Multiply-Add)の二段階丸め誤差(double rounding error)について色々と知る機会があったのでまとめておく。ついでにFMAに関するOpenJDKのバグっぽい挙動を見つけたのでそれも併せて記しておく。 FMA (Fused Multiply-Add)とは FMAは以下のような演算のことを呼ぶ。 この演算自体は行列の乗算やベクトルの内積の計算でよく現れるものであるが、通常の浮動小数点数の乗算と加算を別々に行うと誤差が出るので一度の演算で正確な値を算出したいときに用いる。たとえばC言語(C99)では fma、fmaf、fmalという3つの関数が導入されているらしい。 FMAの実装における二段階丸め誤差 FMAはターゲットとなるCPUのアーキテクチャがFMA命令をサポートしていればその命令を直接呼び出

    浮動小数点数の二段階丸め誤差 - hydrakecat’s blog
  • 第70回PHP勉強会で浮動小数点数の話をしました - hnwの日記

    7月22日に開催された第70回PHP勉強会で発表してきました。以下が発表資料です。 浮動小数点数周りのトピックを3点紹介する内容でしたが、思ったより反応が良かったように思います。 ただ、面白おかしく話そうとして、聞いている方々に無駄に恐怖を与えてしまったかもしれません。冷静に読み返していただければ、怖いように見える内容もレアケースの話題が多いことがわかるかと思います。 また、PDOの挙動については誤解を与えてしまったかと思いますので、プレゼン資料の25ページ目を大幅に差し替えてアップロードしました。 この点についてもう少し説明します。PDOでプリペアードクエリを利用する際、プレースホルダに値を埋め込むのにPDOStatement::bindValueメソッドを利用することができます。この際、bindValueメソッドの第3引数で利用でPDO::PARAM_INT定数を指定しても、第2引数の

    第70回PHP勉強会で浮動小数点数の話をしました - hnwの日記
  • 第38回 「先端FPGAにみるDSP実装の柔軟性」

    「18ビット精度モード」か「高精度モード」を選べるアルテラFPGAのDSPブロック  FPGAやDSPの既成概念を覆す「可変精度DSPブロック」がいま注目を浴びている。アルテラの28nm FPGAに内蔵されたこの革新的なブロックは、高精度信号処理向けのネイティブサポートと、FIRフィルタ、FFTなどの共通のDSP構造向けに最も効率的な実装の組み合わせを提供する。稿では、ターゲット機器およびDSPアルゴリズムごとに乗算器の精度を変えられ、FPGAリソースを効率的に使える可変精度DSPブロックのメリットを探る。 3ファミリに共通するDSPアーキテクチャ FPGAは、高い演算性能が求められるDSPのプラットフォームに用いられる(稿で用いる「DSP」は、Digital Signal Processing:デジタル信号処理の意。Digital Signal Processorは「DSPプロセッサ

    第38回 「先端FPGAにみるDSP実装の柔軟性」
  • 1