BigDecimal.valueOf(float) の罠 — 浮動小数点の誤差が切り捨てで表面化する話
ある数値計算で「本来2527になるはずの値が2526になる」というズレに遭遇した。原因は BigDecimal に float を渡していたことだった。float→double 昇格・BigDecimal.valueOf の挙動・切り捨てによる誤差の増幅を整理し、正しい書き方と、再発をバイトコードから検出する方法までまとめる。
Notes on engineering, side projects, and ideas worth keeping.
About me ↗ある数値計算で「本来2527になるはずの値が2526になる」というズレに遭遇した。原因は BigDecimal に float を渡していたことだった。float→double 昇格・BigDecimal.valueOf の挙動・切り捨てによる誤差の増幅を整理し、正しい書き方と、再発をバイトコードから検出する方法までまとめる。
Astroで作っているこのブログに、Notion風のCallout(情報ボックス)をremark-directiveと自作のremarkプラグインで導入した。導入手順と、実際の表示パターンをまとめてみた。
GitHub ActionsからOIDCを使ってAWSを操作する方法を、TerraformとGitHub Actionsのサンプルコードとともにまとめてみた。あわせて、裏側でどのような認証フローが動いているのかも整理する。
OIDC(OpenID Connect)とはなにか?OAuth 2.0との関係、IDトークンの中身、認証フロー、よりセキュアに使うためのポイントについてまとめてみた。
OAuth 2.0とはなにか?何を解決する仕組みなのか、登場人物と基本のフロー、グラントタイプの使い分け、リフレッシュトークンの仕組みについてまとめてみた。