2011-05-28 73 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 
相关问题