2 つの not=zero 小数だけで数値を表示するにはどうすればよいですか?
例:
0.00045578 の場合は 0.00045 が必要で、1.0000533535 の場合は 1.000053 が必要です
2 つの not=zero 小数だけで数値を表示するにはどうすればよいですか?
例:
0.00045578 の場合は 0.00045 が必要で、1.0000533535 の場合は 1.000053 が必要です
私の解決策は、数値を文字列に変換することです。「.」を検索し、ゼロ以外の数字が見つかるまでゼロを数え、次に 2 桁を取ります。
これはエレガントなソリューションではありませんが、一貫した結果が得られると思います。
そのための組み込みのフォーマットはありません。
数値の小数部分を取得し、2 桁になるまでゼロがいくつあるかを数え、そこから形式をまとめることができます。例:
double number = 1.0000533535;
double i = Math.Floor(number);
double f = number % 1.0;
int cnt = -2;
while (f < 10) {
f *= 10;
cnt++;
}
Console.WriteLine("{0}.{1}{2:00}", i, new String('0', cnt), f);
出力:
1.000053
注: 指定されたコードは、数値の小数部が実際に存在する場合にのみ機能し、負の数値には機能しません。これらのケースをサポートする必要がある場合は、そのためのチェックを追加する必要があります。
この関数を試して、ゼロを探すのではなく、解析を使用して小数桁の数を見つけます (負の数でも機能します)。
private static string GetTwoFractionalDigitString(double input)
{
// Parse exponential-notation string to find exponent (e.g. 1.2E-004)
double absValue = Math.Abs(input);
double fraction = (absValue - Math.Floor(absValue));
string s1 = fraction.ToString("E1");
// parse exponent peice (starting at 6th character)
int exponent = int.Parse(s1.Substring(5)) + 1;
string s = input.ToString("F" + exponent.ToString());
return s;
}