Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用String.Format格式化带有逗号分隔符和小数点浮点的数字?_C#_String_String Formatting - Fatal编程技术网

C# 如何使用String.Format格式化带有逗号分隔符和小数点浮点的数字?

C# 如何使用String.Format格式化带有逗号分隔符和小数点浮点的数字?,c#,string,string-formatting,C#,String,String Formatting,假设我有一个十进制数字列表,我必须每隔三位用逗号格式化,再加上小数点后适当的位数。我想使用.netstring.Format方法 我希望它能像这样工作: string format = ???; string s1 = string.Format(format, "1500"); // "1,500" string s2 = string.Format(format, "1500.25"); // "1,500.25" string s3 = string.Format(format. "3.1

假设我有一个十进制数字列表,我必须每隔三位用逗号格式化,再加上小数点后适当的位数。我想使用.net
string.Format
方法

我希望它能像这样工作:

string format = ???;
string s1 = string.Format(format, "1500"); // "1,500"
string s2 = string.Format(format, "1500.25"); // "1,500.25"
string s3 = string.Format(format. "3.1415926358979"); // "3.1415926358979"
string format = "{0:#,##0.#############}";
string s1 = string.Format(format, double.Parse("1500")); // "1,500"
string s2 = string.Format(format, double.Parse("1500.25")); // "1,500.25"
string s3 = string.Format(format, double.Parse("3.1415926358979")); // "3.1415926358979"
public static string DecimalFormatCludge(string original)
{
    var split = original.Split('.');
    return string.Join(".", (new [] { int.Parse(split[0]).ToString("#,##0")}).Concat(split.Skip(1)));
}
string format = "{0:#,##.##################}";
我见过其他答案,其中小数点后的数字要么被限制为固定的位数,要么被完全截断,但这不适用于我的应用程序。我想将逗号分隔符添加到数字的整个部分,但保留小数点后的数字与原来完全相同。

类似的内容

string s1 = format.ToString("#,##0.00");

第一个问题,您需要先解析字符串,然后才能格式化它们。可能会有一些精度损失。然后你需要决定你需要的最大精度是多少。然后你可以这样做:

string format = ???;
string s1 = string.Format(format, "1500"); // "1,500"
string s2 = string.Format(format, "1500.25"); // "1,500.25"
string s3 = string.Format(format. "3.1415926358979"); // "3.1415926358979"
string format = "{0:#,##0.#############}";
string s1 = string.Format(format, double.Parse("1500")); // "1,500"
string s2 = string.Format(format, double.Parse("1500.25")); // "1,500.25"
string s3 = string.Format(format, double.Parse("3.1415926358979")); // "3.1415926358979"
public static string DecimalFormatCludge(string original)
{
    var split = original.Split('.');
    return string.Join(".", (new [] { int.Parse(split[0]).ToString("#,##0")}).Concat(split.Skip(1)));
}
string format = "{0:#,##.##################}";
小数点后的
#
是小数位数的保留位。如果没有更多的数字,它将不会显示尾随的零

如果转换为
double
时被限制为小数位数或可能失去精度。你可以做一些非常笨拙的事情,比如:

string format = ???;
string s1 = string.Format(format, "1500"); // "1,500"
string s2 = string.Format(format, "1500.25"); // "1,500.25"
string s3 = string.Format(format. "3.1415926358979"); // "3.1415926358979"
string format = "{0:#,##0.#############}";
string s1 = string.Format(format, double.Parse("1500")); // "1,500"
string s2 = string.Format(format, double.Parse("1500.25")); // "1,500.25"
string s3 = string.Format(format, double.Parse("3.1415926358979")); // "3.1415926358979"
public static string DecimalFormatCludge(string original)
{
    var split = original.Split('.');
    return string.Join(".", (new [] { int.Parse(split[0]).ToString("#,##0")}).Concat(split.Skip(1)));
}
string format = "{0:#,##.##################}";

这将拆分字符串中的
,将第一部分解析为int,将其转换回正确格式的字符串,然后将小数部分重新粘贴(如果有)

格式如下:

string format = ???;
string s1 = string.Format(format, "1500"); // "1,500"
string s2 = string.Format(format, "1500.25"); // "1,500.25"
string s3 = string.Format(format. "3.1415926358979"); // "3.1415926358979"
string format = "{0:#,##0.#############}";
string s1 = string.Format(format, double.Parse("1500")); // "1,500"
string s2 = string.Format(format, double.Parse("1500.25")); // "1,500.25"
string s3 = string.Format(format, double.Parse("3.1415926358979")); // "3.1415926358979"
public static string DecimalFormatCludge(string original)
{
    var split = original.Split('.');
    return string.Join(".", (new [] { int.Parse(split[0]).ToString("#,##0")}).Concat(split.Skip(1)));
}
string format = "{0:#,##.##################}";

似乎你只需要en-US
CultureInfo
我打赌他的真正问题是他希望精度是原始数字的精度。。。事实上,如果你把你的答案转换成像《代码》这样的东西,事实上,如果你把你的答案转换成你的答案,事实上,如果你把你的答案转换成像《代码》这样的东西,事实上,事实上,如果你把你的答案转换成像《代码》这样的东西,事实上,如果你把你的答案转换成你的答案,事实上,如果你事实上,如果你把你的答案转换成你的答案,事实上,事实上,事实上,事实上,如果你的话,如果你事实上,事实上,事实上,如果你,如果你把你的答案的答案转换成你的答案,如果你的答案,如果你的答案转换成你的答案,事实上,事实上,事实上,事实上,事实上,事实上,如果你,如果你的答案,如果你,如果你的答案,如果你的答案转换成像是,如果你的答案,如果你的答案,如果你的答案,如果你的答案,如果你的答案,如果你的给他。没错,威尔,我需要保持原始数字的精度。在小数点后追加额外的00或删除任何数字都不行。我突然想到要写
,################################
,但对我来说这似乎是个难题。@Daniellaungluddon。我认为在这个框架中没有一个确切的解决方案。