我有一些我希望转换为字符串的浮点值,我希望在转换时保持格式相同,即999.0000(浮点) - > 999.0000(字符串)。我的问题是当值包含小数点后的任意数量的零时,如前例所示,它们在转换为字符串时被剥离,因此我实际得到的结果是999.
我查看了MSDN上toString()
方法的格式说明符,RoundTrip('R')说明符看起来会产生我想要的,但它仅支持Single,Double和BigInt变量。浮点变量是否有这样的格式说明符?或者将值转换为双精度会更容易吗?
更新:为了清楚起见,我想保留尾随零的原因是因为我正在对小数位进行比较,即我正在比较两个值之间小数位后的位数。因此,例如,1.00和1.00000在小数点后具有不同的位数。我知道这是一个奇怪的要求,它是为了工作而且要求来自高处。
更新2-3-11:
我正在考虑这个问题,我正在读取txt文件中的数字,然后将它们解析为浮点数,我将修改程序以检查字符串值是小数还是整数。很抱歉浪费你的时间,虽然这非常有见地。
答案 0 :(得分:50)
使用ToString()
格式:
12345.678901.ToString("0.0000"); // outputs 12345.6789
12345.0.ToString("0.0000"); // outputs 12345.0000
在格式结束时根据需要加零。
答案 1 :(得分:25)
首先,作为Etienne says,C#中的float
是 Single
。它只是该数据类型的C#关键字。
所以你绝对可以这样做:
float f = 13.5f;
string s = f.ToString("R");
其次,你曾多次提到数字的“格式”;数字没有格式,只有值。 字符串有格式。这让我想知道:你有什么东西有格式但不是字符串?我能想到的最接近的事情是decimal
,其中 保持自己的精确度;但是,简单地调用decimal.ToString
应该具有您想要的效果。
如何包含一些示例代码,以便我们可以准确地看到您正在做什么,以及为什么它没有达到您想要的效果?
答案 2 :(得分:14)
您可以将格式字符串传递给ToString方法,如下所示:
ToString("N4"); // 4 decimal points Number
如果您想查看更多修饰符,请查看MSDN - Standard Numeric Format Strings
答案 3 :(得分:4)
在C#中,float
是System.Single
的别名(有点像int
是System.Int32
的别名)。