2009-10-19 28 views
14

我有一個十進制數,例如1234.500。將逗號分隔符(.net)加上十進制(.net)

我想它顯示1,234.4

即時通訊目前將其轉換爲雙刪除尾隨0。

string.Format(「{0:0,0}」,1234.500)刪除小數點,其他格式化選項無論如何都使用兩個小數位。

任何人都可以提供見解?

+0

編輯,只是爲了澄清1234.560,我希望1,234.56 – maxp 2009-10-19 09:44:01

+0

你想顯示爲1,234 *。 * 5 **對嗎?編輯帖子以反映這一點。 – Amarghosh 2009-10-19 09:48:17

+0

你想使用本地系統設置,或者只是強制應用程序以這種方式格式化? – 2009-10-19 09:50:08

回答

18

您應該使用自定義格式像#,##0.00

string s = string.Format("{0:#,##0.00}", xx); 

會產生1,234.50當XX = 1234.5M
忘記轉換爲double,不會真正的幫助。

+0

不要任何結尾的零 – maxp 2009-10-19 09:55:35

+1

然後刪除一個或多個零:#,## 0。或者讓它們可選:#,## 0# – 2009-10-19 09:58:34

+0

感謝您的幫助。 – maxp 2009-10-19 10:01:37

0

你試過嗎?

String.Format("{0:0,0.00}", 1234.560); 
+0

不從小數中刪除結尾零 - 嘗試 String.Format(「{0:0,0.00}」,1234.5) – maxp 2009-10-19 09:54:12

6

另一種選擇:

decimal d = 1234.56m; 
string s = d.ToString("N"); // 1,234.56 
9

您是否知道.NET內置了根據應用程序的每個用戶的區域設置正確設置數字格式的支持?利用用戶自己的區域設置可能會更好(.NET框架已經知道所有正確的設置)。然而,如果你想修復你的應用程序在特定的區域設置中格式化數字,你仍然可以選擇你選擇的特定區域,並強制.NET使用它作爲所有格式化的基礎(而不僅僅是數字) :

using System.Globalization; 
using System.Threading; 
... 
CultureInfo us = new CultureInfo("en-US"); 

然後

Thread.CurrentThread.CurrentUICulture = us; 

或只是

Console.WriteLine(d.ToString("c", us)); 

你應該知道的是,使用逗號作爲千位分隔符的是適合於英國和美國,但它並不怎麼數千應該在其他國家

「1025在顯示1,025顯示聯邦 國家和德國1.025。在瑞典,千位分隔符是一個空格」

MSDN has dedicated section專門討論這個話題,他們稱之爲‘全球化’(即是一個很好的搜索詞,如果以往任何時候都需要追捕更詳細)。該頁面描述瞭如何使用井號作品的數字佔位符去除尾隨零(由亨克Holterman在以前的評論所說)。

又見Custom Numeric Format Strings

0

試試這個!

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 
     Try 
      TextBox1.Text = Format(CInt(TextBox1.Text), "#,#") 
      TextBox1.SelectionStart = TextBox1.Text.Length 
     Catch ex As Exception 

     End Try 

End Sub 
0

試試這個:

string myNumber = string.Format("{0:#,0.00}", 1234.500); 

(我在RDLC看到這個報道)

相關問題