s
とにはまったく同じ数値が含まれていますが、とテキストへの変換にd
使用される桁数が異なるため、異なる数字が表示されます。Single
Double
Console.WriteLine(s)
ここに記載されているフォーマット指定子「G」を使用して変換する usingのConsole.WriteLine(Single)
テキスト表現を生成する呼び出し。同様に、 を呼び出します。s
Single.ToString
Console.Writeline(d)
Double.ToString
ドキュメントによると、使用される最大桁数は の場合は 7 桁、 の場合はSingle
15 桁ですDouble
。実際に使用される桁数を指定しているドキュメントはありません。最大値のみです。
このステートメントは、 1.15 に最も近い値である 1.14999997615814208984375 にDim s As Single = 1.15
設定します。(2 番目に近いのは 1.150000095367431640625 です。)その値を 7 桁に丸めると、結果は「1.150000」になります。私は、.NET が末尾のゼロを省略して「1.15」を生成していると推測します。s
Single
d
同じ値に設定して印刷すると、15 桁が使用されます。1.14999997615814208984375 を 15 桁に四捨五入すると、結果は「1.14999997615814」になります。
したがって、 aSingle
を に変換してもエラーは発生しませんDouble
。これは単なる表示の錯覚です。
Double
を に変換すると、一般にエラーが発生することに注意してくださいSingle
。と書いたDim d As Double = 1.15
場合、d
1.149999999999999911182158029987476766109466552734375 に設定され、Console.WriteLine(d)
「1.15」が生成されると予想されます。に変換d
するSingle
と、1.14999997615814208984375 が生成されます。