5

いくつかの大きな数を科学的形式でフォーマットしようとしていますが、3の倍数のパワーが必要です。これを行うための推奨される方法はありますか?

私は表に数値の範囲を持っており、真の科学的形式(小数点の前に1桁)の代わりに、3の倍数の累乗を持つために、その変更を喜んで受けています。たとえば、次のようになります。

3.123e + 003
19.523e + 003

それよりも:

3.123e + 003
1.952e + 004

すべての力を3の倍数にすることで、テーブルをスキャンしやすくなると思います。

前もって感謝します

4

1 に答える 1

4

自分で関数を書く必要があると思います。最初は、必要以上に2桁の精度で数値の科学的表現を得ることができます。次に、結果の文字列を解析して、浮動小数点係数と10の累乗インデックスを10進数型の数値として取得する必要があります。その後、除算インデックスの余りを3で分析し、適切な方法で数値を変更します。最後に、出力文字列を生成します。

static string Scientific3(double value, int precision)
{
    string fstr1 = "{0:E" + (precision+2).ToString() + "}";
    string step1 = string.Format(fstr1, value);
    int index1 = step1.ToLower().IndexOf('e');
    if (index1 < 0 || index1 == step1.Length - 1)
        throw new Exception();
    decimal coeff = Convert.ToDecimal(step1.Substring(0, index1));
    int index = Convert.ToInt32(step1.Substring(index1 + 1));
    while(index%3!=0)
    {
        index--;
        coeff *= 10;
    }
    string fstr2 = "{0:F" + precision.ToString() + "}E{1}{2:D3}";
    return string.Format(fstr2, coeff, ((index < 0) ? "-" : "+"), Math.Abs(index));
}
于 2011-08-10T13:31:25.210 に答える