C#プログラミングにおける文字列の浮動小数点数への変換はよくある作業であり、様々なソースからのデータ処理で頻繁に見られます。この記事では、この変換のための効率的で堅牢な方法を探り、より強固なアプリケーションのためのエラー処理を重視します。
目次
float.Parse()
とfloat.TryParse()
の使用
float.Parse()
メソッドは、文字列をfloat
に変換する直接的なアプローチを提供します。しかし、潜在的な例外を処理することが重要です。より堅牢な代替手段はfloat.TryParse()
であり、成功または失敗を示すブール値を返すことで例外を回避します。
float.Parse()
:
string myString = "3.14159";
float myFloat;
try
{
myFloat = float.Parse(myString);
Console.WriteLine($"The float value is: {myFloat}");
}
catch (FormatException)
{
Console.WriteLine($"Unable to parse '{myString}' as a float.");
}
catch (OverflowException)
{
Console.WriteLine($"The string '{myString}' represents a number too large or too small for a float.");
}
float.TryParse()
:
string myString = "3.14159";
float myFloat;
if (float.TryParse(myString, out myFloat))
{
Console.WriteLine($"The float value is: {myFloat}");
}
else
{
Console.WriteLine($"Unable to parse '{myString}' as a float.");
}
float.TryParse()
は、よりクリーンなエラー処理のために一般的に推奨されます。
double.Parse()
、double.TryParse()
、およびキャストの使用
代替のアプローチとして、double.Parse()
またはdouble.TryParse()
を使用して文字列を最初にdouble
に変換し、その後明示的にfloat
にキャストする方法があります。これは精度損失につながる可能性があります。
double.Parse()
とキャスト:
string myString = "1234.56";
float myFloat;
try
{
myFloat = (float)double.Parse(myString);
Console.WriteLine($"The float value is: {myFloat}");
}
catch (FormatException)
{
Console.WriteLine($"Unable to parse '{myString}' as a double.");
}
catch (OverflowException)
{
Console.WriteLine($"The string '{myString}' represents a number too large or too small for a double.");
}
double.TryParse()
とキャスト:
string myString = "1234.56";
double tempDouble;
float myFloat;
if (double.TryParse(myString, out tempDouble))
{
myFloat = (float)tempDouble;
Console.WriteLine($"The float value is: {myFloat}");
}
else
{
Console.WriteLine($"Unable to parse '{myString}' as a double.");
}
適切なメソッドの選択
ほとんどの場合、float.TryParse()
は効率性とエラー処理の最適な組み合わせを提供します。double.TryParse()
とキャストは、既にdouble
値を使用している場合、または文字列がfloat
の範囲外の数値を表す可能性がある場合にのみ検討する必要があります。
例外の可能性を常に考慮し、特定のニーズとエラー処理戦略に最適なメソッドを選択してください。