C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■89841 / 1階層)  (string)とToString()の違い
□投稿者/ 774RR (655回)-(2019/01/08(Tue) 08:29:44)
「なぜ」と問われると「仕様だから」ってことになるわけですが
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/types/casting-and-type-conversions
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/explicit-numeric-conversions-table
double を文字列にする明示的変換すなわちキャストは後者の一覧の中にない、よって許されていない。
なので ToString() が必要ってことでしょう。

浮動小数点数の文字列化にはいろんな方式があるので変換方法=フォーマットを指定する必要があり
単にキャストだとフォーマット指定ができないのでダメ、って事情もありそう。

double x = 0.1; // は正確に 0.1 にならない
Console.WriteLine(x.ToString());
Console.WriteLine(x.ToString("E17"));
Console.WriteLine(x.ToString("F17"));
Console.WriteLine(x.ToString("G17"));
だと
0.1
1.00000000000000010E-001
0.10000000000000000
0.10000000000000001
のように変換方式によって文字列化の結果が違います、ってことで。

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←(string)とToString()の違い /HM →Re[2]: (string)とToString()の違い /HM
→Re[2]: (string)とToString()の違い /通りすがり
 
上記関連ツリー

(string)とToString()の違い / HM (19/01/08(Tue) 04:49) #89840
(string)とToString()の違い / 774RR (19/01/08(Tue) 08:29) #89841 ←Now
  ├ Re[2]: (string)とToString()の違い / HM (19/01/08(Tue) 22:46) #89855 解決済み
  └ Re[2]: (string)とToString()の違い / 通りすがり (19/01/11(Fri) 07:02) #89868 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信