C#プログラミングの内部変換誤差についてのお話
// 0.0001 を 10000 回 加算すると、ぴったり 1 になるか?
// → 浮動小数点ではNG!
float X = 0 ; // 32 bit 浮動小数点 型(有効桁 約 7 桁)
double Y = 0 ; // 64 bit 浮動小数点 型(有効桁 約 16 桁)
decimal Z = 0 ; // 固定小数点 型 (有効桁 約 29 桁)
for (int N = 1 ; N <= 10000 ; N ++)
{
X += 0.0001f ; // 結果 1.000054
Y += 0.0001 ; // 結果 0.999999999999906
Z += 0.0001m ; // 結果 1
}
// Note: decimal型では内部変換誤差は発生しないが、浮動小数点型では
// 内部変換誤差が発生することがあるので、注意すること!
トップページ
> 特殊文字とは
> 起動時のパラメータ取得方法
> C#プログラミング文字列を連結する方法
> C#でのファイルの書き込み
> 文字列の分割の方法
> C#のファイルパス名文字列から、ファイル名や拡張子を抜きだす方法
> C#文字列扱いの方法etc
> ダイアログで複数ファイル名を読む方法
> 動的配列の取り方
> チェックリストボックスでチェックされたものを調べる方法
> C#ファイルからの入力
> 文字列の検索方法
> 四捨五入する方法
> 小数点操作のいろいろ
> 型変換による精度保持の方法
> 内部変換誤差のお話
> C#で数値を文字列に変換する方法
> 算術演算 (関数) の記述
> C#ファイルの移動
> C#フォームをアクティブにする方法
> Formを必ず最前面に移動しその Form にフォーカスを移動する
> C#で時間差表示する方法
> Form の多重起動を防ぐ
> Form を最前面に\配置
> Formを自動で閉じる
> VisualStudioでセットアップモジュールを作る方法
> *
> *
> *
> (以下は用語説明文)
> .NET Framework