C#字符串。格式为1000,00到1.000,00

C#字符串。格式为1000,00到1.000,00,c#,string,string.format,C#,String,String.format,如何将数字更改为以下内容: 1000应该变成1.000,00,当我有700时,它必须是700,00 当我尝试string.Format(“{0:0000.00}”,Number)时,700变成0.700,00,所以它不好。试试这个string.Format({0:n}),1000)你需要它 string.Format("{0:#,##0.00}", Number) 您需要将lead占位符指定为#而不是零,这使得它是可选的 但是,与其用“蛮力”来设置数字格式,不如找出您想要的区域性格式,并为st

如何将数字更改为以下内容:

1000
应该变成
1.000,00
,当我有
700
时,它必须是
700,00


当我尝试
string.Format(“{0:0000.00}”,Number)
时,
700
变成
0.700,00
,所以它不好。

试试这个
string.Format({0:n}),1000)
你需要它

string.Format("{0:#,##0.00}", Number)
您需要将lead占位符指定为#而不是零,这使得它是可选的

但是,与其用“蛮力”来设置数字格式,不如找出您想要的区域性格式,并为string.format提供正确的
CultureInfo
String.Format
用于按如下方式提供格式化区域性:

var culture = CultureInfo.GetCultureInfo("fr-FR");
var formattedNumber = string.Format(culture , "{0:n}", Number);
(我选择使用法语纯粹作为说明,因为它似乎符合您示例中的要求)

如果您希望使用特定格式,则不应使用
{0:n}
,而不指定区域性,因为这完全取决于用户/系统的区域性设置。

请尝试
String.format(“#,0.##”)
。这对我很有用。
输入:800
产量:800,00

输入:1400
产量:1.400,00


我使用德国文化作为数字格式。可能需要根据区域性进行指定。

使用格式字符串格式化数字时,
是用于格式化的区域性的小数分隔符的占位符。
类似地用作千位分隔符

string.Format(CultureInfo.GetCultureInfo("de-DE"), "{0:n}", 1000)
您需要在正确的位置使用它们,并使用一个区域性,该区域性使用
作为十进制分隔符,使用
作为千位分隔符

string.Format(CultureInfo.GetCultureInfo("de-DE"), "{0:n}", 1000)
产生
1.000,00

string.Format(CultureInfo.GetCultureInfo("en-GB"), "{0:n}", 1000)

生成
1000.00

中提供适当的
文化信息
,以指定小数分隔符和千位分隔符

string.Format(CultureInfo.GetCultureInfo("en-GB"), "{0:n}", 1000)
最好的方法是在应用程序级别定义它以实现一致性

Winforms:

在program.cs中

System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator = ",";
System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberGroupSeparator = ".";
ASP.NET

定义一个基本页,然后执行以下操作:

    protected override void InitializeCulture()
    {
    base.InitializeCulture(); 

     System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator = ",";    
     System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberGroupSeparator = ".";                    
    }

您是否尝试过根据需要设置数字格式

NumberFormatInfo num = new NumberFormatInfo();

num.NumberDecimalSeparator = ",";
num.NumberGroupSeparator = ".";
string samp =  70000.00.ToString("N2",num); // prints 70.000,00
这将有助于:

NumberFormatInfo num = new CultureInfo("de-DE", false).NumberFormat;
double myDigit = 123456789; // you can also use int
string output = myDigit.ToString("N0" , num);
//output = 123.456.789

如果您使用
ToString(“F”,num)
您可以使用
123456789.33
,您的输出将是
123.456.789,33

您希望十进制分隔符是,而千位分隔符是。@AseemGautam-这就是它在我们这个小星球的几种文化中的工作方式。请尝试“改为”还是“0”?{0:#.###,00}. 另外:检查我的答案。您可以在应用程序级别执行此操作。节省了大量的工作,加上在代码中的无数个地方这样做只是维护地狱。不!!-这使得它完全依赖于当前的区域性设置。作为具有不同语言环境设置的不同用户尝试此操作,您将得到不同的答案。这不是将格式强制用于特定内容的正确方法。@RobLevine我同意,我不确定Xeramal是否会扩展到这个范围。最常见的模式是
,#0.00
。在这种情况下,将产生
0,01
1.000.000,00
@Xeramal-使用
de
。文化“de de”可能就是您所需要的!