6

2 つの not=zero 小数だけで数値を表示するにはどうすればよいですか?

例:

0.00045578 の場合は 0.00045 が必要で、1.0000533535 の場合は 1.000053 が必要です

4

4 に答える 4

3

私の解決策は、数値を文字列に変換することです。「.」を検索し、ゼロ以外の数字が見つかるまでゼロを数え、次に 2 桁を取ります。

これはエレガントなソリューションではありませんが、一貫した結果が得られると思います。

于 2012-06-29T18:41:52.717 に答える
3

そのための組み込みのフォーマットはありません。

数値の小数部分を取得し、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

注: 指定されたコードは、数値の小数部が実際に存在する場合にのみ機能し、負の数値には機能しません。これらのケースをサポートする必要がある場合は、そのためのチェックを追加する必要があります。

于 2012-06-29T18:45:28.250 に答える
1

この関数を試して、ゼロを探すのではなく、解析を使用して小数桁の数を見つけます (負の数でも機能します)。

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;
}
于 2012-06-29T18:53:29.877 に答える