【C#】floatとdouble、何が違う?桁数・誤差・書き方

C#のfloatとdouble、何が違う? 小数の型をやさしく理解。きさらぎくんとながねこのイラスト。 プログラミング
スポンサーリンク

サイト所有者の公開承認済み・人間による技術レビュー未実施

スポンサーリンク

対象・前提

対象:C# の float / double。宣言例は .NET 6 / C# 10 で確認対象。
一次資料確認:2026-09-17 / 公開:サイト所有者の承認による。人間による技術レビュー:未実施。

01 何が違う?

どちらも小数を扱う型です。doubleのほうが多くのを扱えます。ただし、どんな小数でもぴったり保存できるわけではありません。
くわしく読む(DEEP)
C# の float と double は浮動小数点型で、.NET の System.Single と System.Double に対応します。精度の目安は float が約6〜9、double が約15〜17桁、サイズはそれぞれ4バイトと8バイトです。

どちらも0.1を厳密には表現できません。精度の高さと、すべての小数を誤差なく表せることは異なります。 [S1 / claim-precision, claim-rounding]

02 コードで書くと

floatで書くときは、数値の後ろに f を付けます。小数点を含む数値に接尾辞を付けなければ、doubleとして扱われます。

下の例は同じ1.5を、それぞれの型に入れています。
くわしく読む(DEEP)
実数リテラルは f/F の接尾辞で float、接尾辞なしまたは d/D で double となります。以下の1.5は両方の型で表現できるため、宣言構文と型の確認に使います。この例だけで一般の小数の誤差を検証したとは扱いません。 [S1 / claim-literal]

C#の宣言例

C# · .NET 6 / C# 10 · 実行確認済み

float small = 1.5f;
double large = 1.5;

独自の宣言例。2026-09-17、SDK 6.0.428で実行。Single: 1.5 / Double: 1.5。ログ: tests/code-result.txt。S1: Real literals。

03 覚えておきたいこと

「桁を多く扱えるから誤差がない」とは考えないようにします。使う関数やライブラリが求める型も確認してください。
くわしく読む(DEEP)
この説明の対象はC#です。他言語の同名の型にそのまま当てはめません。記憶域のサイズだけで速度差を断定せず、用途とAPIが求める型を確認します。 [S1 / claim-rounding]

出典と事実カード

[S1] Microsoft Learn — Floating-point numeric types
参照箇所:Characteristics of the floating-point types / Real literals。
支える主張:claim-precision(精度とサイズ)、claim-rounding(0.1の表現)、claim-literal(接尾辞)。
一次資料を2026-09-17に閲覧。コードの実行確認・人間レビューとは別の確認です。
この記事の用語辞書
浮動小数点型
仮数と指数を使って数値を表す型。表現できる数は有限で、すべての小数を正確に保存できるわけではありません。
数を表す数字の位置、または数字の数。この説明では、値をどれくらい細かく表せるかを見る目安です。
タイトルとURLをコピーしました