2

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

1000应该成为1.000,00,当我有的时候700,它必须是700,00
当我尝试string.Format("{0:0,000.00}", Number)时,700变成0.700,00了,所以它不好。

4

8 回答 8

8

你需要

string.Format("{0:#,##0.00}", Number)

您需要将前导占位符指定为 # 而不是零,这使其成为可选的。

但是,与其“蛮力”设置数字格式,不如确定您的目标是哪种文化格式并CultureInfo为 string.format 提供正确的格式。String.Format允许您提供如下格式的文化:

var culture = CultureInfo.GetCultureInfo("fr-FR");
var formattedNumber = string.Format(culture , "{0:n}", Number);

(我选择纯粹使用法语作为说明,因为它似乎符合您示例中的要求)。

如果您关心具有特定格式,您不应该做的是在{0:n}不指定文化的情况下使用 - 因为这完全取决于用户/系统的文化设置。

于 2012-04-18T12:08:09.103 回答
6

CultureInfostring.Format中提供正确的

于 2012-04-18T12:09:53.143 回答
5

您希望小数分隔符为 ,千位分隔符为 。

最好的方法是在应用程序级别定义它以保持一致性。

窗体:

在 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 = ".";                    
    }
于 2012-04-18T12:12:36.217 回答
2

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

您需要在正确的位置使用它们,并使用一种将 a,用作小数分隔符和.千位分隔符的区域性。

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

产生1.000,00.

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

产生1,000.00.

于 2012-04-18T12:09:07.140 回答
2

您是否尝试根据需要设置 NumberFormat

NumberFormatInfo num = new NumberFormatInfo();

num.NumberDecimalSeparator = ",";
num.NumberGroupSeparator = ".";
string samp =  70000.00.ToString("N2",num); // prints 70.000,00
于 2012-04-18T12:14:33.410 回答
0

试试这个 String.Format("{0:n}", 1000 )

于 2012-04-18T12:06:36.533 回答
0

试试String.Format("#,0.##")。这个对我有用。
输入:800
输出:800,00

输入:1400
输出:1.400,00

我使用德国文化作为数字格式。也许你必须指定它,这取决于你的文化。

于 2012-04-18T12:08:48.633 回答
0

这将起作用:

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

于 2021-01-27T11:23:50.027 回答