1

カスタム フォーマット文字列でできることを超えていると思われる状況に遭遇しました。

しかし、私が書いたコードは非常にひどいので、とにかく尋ねようと思いました。

私が必要とするのは、次のように、10 進数を 6 桁または 7 桁の文字列として表示することです。

number = 12345.67M
(optional)
tenthousands thousands hundreds tens ones tenths hundredths
     1          2         3      4    5     6        7

これを達成するために私が書いたコードは次のとおりです。

public static string ConvertDecimalToString(decimal easting, int length)
{
    var formatString = "{0:0000.00}";
    var numberAsString = string.Format(formatString, easting);
    var removePeriod = numberAsString.Replace(".", "");

    if (removePeriod.Length > length)
    {
        return removePeriod.Substring(removePeriod.Length - length, length);
    }
    else
    {
        return removePeriod.PadLeft(length, '0');
    }
}

期待される入力と出力:

Input           Output(6)    Output(7)
912345.67M      234567       1234567
12345.67M       234567       1234567
1234.56M        123456       0123456
1234.5M         123450       0123450
1234M           123400       0123400
234M            023400       0023400
4

2 に答える 2

1

小数を(小数点を省略して)12345.67表示したい場合は、次のトリックを使用します。1234567

decimal number = 12345.67M;
string s = string.Format("{0:0000000}", number * 100.0);

または

string s = string.Format("{0:F0}", number * 100.0); // zero decimal places

士気: 書式設定から生成された文字列をいじらないでください。代わりに入力値を変更し、書式設定に任せてください。

于 2015-07-09T05:50:38.513 に答える
0

私があなたを正しく理解しているなら、あなたはあなたの番号を数字に分けたいと思っています

str=number.ToSting() は、反復して番号を作成できる文字列を提供します

str.split('.') は、数値の両側を提供します。その後、フォーマットを強制することなく、動的に文字列番号を作成できます。

于 2015-07-09T05:50:16.273 に答える