2011-05-28 80 views
8

我想使用c#將逗號添加到每三位數字的十進制數字。
我寫了這個代碼:使用C#將逗號添加到每三位數字的數字

double a = 0; 
a = 1.5; 
Interaction.MsgBox(string.Format("{0:#,###0}", a)); 

但它返回2.
我在哪裏錯了?
請描述我該如何修復它?

+1

Dupe of http://stackoverflow.com/questions/105770/net-string-format-to-add-commas-in-thousan ds-place-for-number – 2011-05-28 11:12:53

+1

@raj:這裏的答案是不同的。 – GregC 2011-05-28 11:18:00

+0

@GregC雖然,不一定比那些被接受的更好的(http://stackoverflow.com/a/105793/1028230)。 ; ^) – ruffin 2014-12-31 20:23:51

回答

9
double a = 1.5; 
Interaction.MsgBox(string.Format("{0:#,###0.#}", a)); 
+0

這是對的謝謝你,請你介紹一下string.Format的第一個參數? – Shahin 2011-05-28 11:12:32

+0

在你的格式字符串中,你沒有尋址數字的小數部分,所以它將它舍入爲2.所以。#在格式字符串地址中,如果總是希望顯示小數部分,即使是2.0然後在格式字符串中使用.0。 – 2011-05-28 11:19:13

+0

我有一個問題:答案中的格式與'#,0。#'不同嗎? – 2011-05-28 20:21:08

3

這裏是如何做到這一點:

string.Format("{0:0,0.0}", a) 
2

它這樣做是正確的。 #,## 0表示用逗號至少寫入一位數字和零小數以及空格數字組。因此,它不能寫小數,因此它會舍入1.5到2。試試#,## 0.00代替。你會得到1.50

2

嘗試以下格式:

string.Format("{0:#,0.0}", a) 
+0

謝謝,你能否介紹一下代碼? – Shahin 2011-05-28 11:14:30

+0

它的工作原理,但對於數字10它返回10.0,我應該替換10.0什麼也沒有,或者可以改善string.Format函數? – Shahin 2011-05-28 11:20:14

+0

@shaahin,雙精度字符串格式在[本文](http://www.csharp-examples.net/string-format-double/)中有很好的解釋。至於10.0,如果你不想要小數,如果它是0,你可以使用'{0:#,#。#}'。 – 2011-05-28 11:20:48

1

你這個嘗試: -

string.Format("{0:0,000.0}", 1.5); 
2

有一個standard format string將分開萬臺:N

float value = 1234.512; 

value.ToString("N"); // 1,234.512 
String.Format("N2", value); // 1,234.51 
相關問題