C# 浮点到字符串格式说明符

C# 浮点到字符串格式说明符,c#,parsing,numbers,string-formatting,C#,Parsing,Numbers,String Formatting,我想将一些浮点值转换为字符串,我想在转换时保持格式不变,即999.0000(浮点)->999.0000(字符串)。我的问题是,当值在小数点后包含任意数量的零时,如前一个示例中所示,它们在转换为字符串时会被剥离,因此我实际得到的结果是999 我查看了上的toString()方法的格式说明符,往返('R')说明符看起来会产生我想要的结果,但它只支持单变量、双变量和BigInt变量。对于浮点变量有这样的格式说明符吗??或者将这些值转换成双精度值会更容易吗 更新:为了清楚起见,我之所以要保留后面的零是因

我想将一些浮点值转换为字符串,我想在转换时保持格式不变,即999.0000(浮点)->999.0000(字符串)。我的问题是,当值在小数点后包含任意数量的零时,如前一个示例中所示,它们在转换为字符串时会被剥离,因此我实际得到的结果是999

我查看了上的
toString()
方法的格式说明符,往返('R')说明符看起来会产生我想要的结果,但它只支持单变量、双变量和BigInt变量。对于浮点变量有这样的格式说明符吗??或者将这些值转换成双精度值会更容易吗

更新:为了清楚起见,我之所以要保留后面的零是因为我在比较小数点,也就是说,我在比较两个值之间小数点后的位数。例如,1.00和1.00000在小数点后有不同的位数。我知道这是一个奇怪的要求,这是为了工作,要求是来自高层

更新2-3-11:

我想得太多了,我从一个txt文件中读取数字,然后将它们解析为浮点数,我将修改程序以检查字符串值是小数还是整数。很抱歉浪费您的时间,尽管这很有见地。

在C#中,
float
系统的别名。Single
(有点像
int
System.Int32
的别名)。

使用
ToString()
以下格式:

12345.678901.ToString("0.0000"); // outputs 12345.6789
12345.0.ToString("0.0000"); // outputs 12345.0000
在格式末尾尽可能多地加零。

首先,因为C#中的浮点是
单个
。它只是该数据类型的C#关键字

因此,您完全可以这样做:

float f = 13.5f;
string s = f.ToString("R");
第二,您多次提到数字的“格式”;数字没有格式,只有值字符串具有格式。这让我想知道:你有什么东西有格式但不是字符串?我能想到的最接近的东西是
十进制
,它确实保持了自己的精度;但是,在这种情况下,只调用
decimal.ToString
应该会产生您想要的效果


包含一些示例代码,这样我们就可以确切地看到您正在做什么,以及为什么它没有达到您想要的效果?

您可以向ToString方法传递一个格式字符串,如下所示:

ToString("N4"); // 4 decimal points Number

如果您想看到更多修饰符,请查看小数点后有多少位?如果你想保持动态,假设值是正确的float,那么使用.ToString(“G”)数字会变化,为了简单起见,我想说小数点后的数字范围可能在1到5之间。ToString(“G”)最适合变量范围使用“G”说明符,但是当遇到像999.0这样的数字时,它返回999。我想保留尾随的零,作为一个字符串,我希望它是“999.0”,如果你想要文本文件中的字符串,并且你不需要实际的值来进行一些计算,为什么你不把值作为字符串读取,而不把它们解析成浮点数呢?如果确实需要这些值,请解析它们,但保留原始字符串。不管是哪种方式,您都可以查看我的帖子,了解如何使用ToString()方法的格式参数对数字进行更简单的格式化。嗨,Aliostad,问题是,我希望字符串的格式与数字的格式完全相同。对于第二个示例,我希望它是一个字符串“12345.0”,而不是“12345.0000”。@kingrichard2005-什么信息告诉您浮点是12345.0还是12345.0000?它们相当于浮点数。我从一个txt文件中读取这些文件。也许更好的选择是确定作为字符串读入的数字是否为十进制数字。问题是这限制了精度。简要说明:在科学领域,区分“1.01e5”和“1.0100e5”很常见,因为尾随零的数量决定了有效数字的数量,表示测量的精度。