簡體   English   中英

C# 雙格式對齊十進制符號

[英]C# double formatting align on decimal sign

我將數字與各種小數位數對齊,以便小數點符號對齊在一條直線上。 這可以通過填充空格來實現,但我遇到了麻煩。

俗話說我想對齊以下數字:0 0.0002 0.531 2.42 12.5 123.0 123172

這是我追求的結果:

     0
     0.0002
     0.531
     2.42
    12.5
   123.0
123172

如果您想要完全符合該結果,則不能使用任何數值數據格式,因為不會將123格式化為123.0 您必須將值視為字符串以保留尾隨零。

這為您提供了您要求的結果:

string[] numbers = { "0", "0.0002", "0.531", "2.42", "12.5", "123.0", "123172" };

foreach (string number in numbers) 
{
    int pos = number.IndexOf('.');
    if (pos == -1) 
        pos = number.Length;
    Console.WriteLine(new String(' ', 6 - pos) + number);
}

輸出:

     0
     0.0002
     0.531
     2.42
    12.5
   123.0
123172

雖然由於尾隨零而不能完全回答問題,但這會將小數點與 4 個小數位對齊,總共最多 11 個字符。

someNumber.ToString("0.0000").PadLeft(11)

例如。 以下字符串

0d.ToString("0.0000").PadLeft(11)
0.0002d.ToString("0.0000").PadLeft(11)
0.531d.ToString("0.0000").PadLeft(11)
2.42d.ToString("0.0000").PadLeft(11)
12.5d.ToString("0.0000").PadLeft(11)
123.0d.ToString("0.0000").PadLeft(11)
123172d.ToString("0.0000").PadLeft(11)

     0.0000
     0.0002
     0.5310
     2.4200
    12.5000
   123.0000
123172.0000

在不變的文化中。

您可以使用double的string.format或ToString方法來執行此操作。

double MyPos = 19.95, MyNeg = -19.95, MyZero = 0.0;

string MyString = MyPos.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: $19.95.

MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: ($19.95).
// The minus sign is omitted by default.

MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: Zero.

如果您需要更多詳細信息,msdn的這篇文章可以幫助您

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM