2013-05-21 63 views
0

我有一个数字是这样的: -1.0001 -10000.01号在C#格式化

,我需要得到这个: -1.0001 -10000,01

要求: - 小数点分隔符“ ,“ - 组分隔符是”“ - 逗号后的数字的一部分可以有不同的长度,这取决于实际数据。

我试图使用这个掩码:“### ### ## 0。####”来格式化数字。 当数字很大时 - 一切正常,但当数字很小时 - 我从数字左侧获得空格。我得到这个: “ - 1,0001” “ - 10 000,01”

据我所知,这些空间是从我使用的面具。

有一些解决方法,但他们不是很美丽,审美赖特。

有没有什么办法可以正确地做到这一点?

谢谢!

+0

我真的不清楚你想要做什么。是什么 ”。”意味着在你想要的输出中,如果你使用逗号作为小数分隔符和空格作为组分隔符? –

回答

1

尝试使用的NumberFormatInfo类来格式化你的电话号码解决您的问题。我用下面的代码来检查我的答案,它的工作对我测试的大/小案例:

static void Main(string[] args) 
    { 
     double smallNumber = -1.01; 
     double smallNumberMoreDigits = -1.0001; 
     double bigNumber = -100000.001; 
     double longNumber = 2.2347894612789; 

     Thread.CurrentThread.CurrentCulture = new CultureInfo("ru", false);    

     Console.Out.WriteLine(smallNumber.ToString("#,0.####")); 
     Console.Out.WriteLine(smallNumberMoreDigits.ToString("#,0.####")); 
     Console.Out.WriteLine(bigNumber.ToString("#,0.####")); 
     Console.Out.WriteLine(longNumber.ToString("#,0.####")); 

     Console.Read(); 
    } 

编辑: 侦探工作(我看了一下您的个人资料)的快速一点告诉我你在俄国。你在寻找一般的俄罗斯数字格式吗?我已经更改了上面的代码。看一看,看看它是否符合你的要求。它给我的结果如下:

-1,01 -1,0001 -100000,001

第二个编辑: 增加屏蔽来获得小数更好的结果。

+0

是的,它确实有效。谢谢! – yurart

+0

我忘了提及我也尝试过NumberFormatInfo,但它没有工作,因为我忘记了它的NumberDecimalDigits属性。 – yurart

+0

很高兴能有所帮助。 –

1

的空间被自动删除计算器时,你贴,但我认为你可以只用修剪像

something.ToString("### ### ##0.####").Trim(); 
+0

如果数字是正数,它会有所帮助。当它们消极时,它将不起作用。 – yurart

+0

有一种解决方法来格式化输入号码。如果是负值 - 使其为正数,则使用Trim()应用遮罩,然后在开始处添加减号。它运作良好,但对我来说似乎很奇怪。 – yurart