Float to String格式说明符

kin*_*005 24 c# parsing numbers string-formatting

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

我查看了MSDNtoString()方法的格式说明符,RoundTrip('R')说明符看起来会产生我想要的,但它只支持Single,Double和BigInt变量.浮点变量是否有这样的格式说明符?或者将值转换为双精度会更容易吗?

更新:为了清楚起见,我想保留尾随零的原因是因为我正在对小数位进行比较,即我正在比较两个值之间小数位后的位数.因此,例如,1.00和1.00000在小数点后具有不同的位数.我知道这是一个奇怪的请求,它是为了工作而且需求来自高位.

更新2-3-11:

我正在考虑这个问题,我正在读取txt文件中的数字,然后将它们解析为浮点数,我将修改程序以检查字符串值是小数还是整数.很抱歉浪费你的时间,虽然这非常有见地.

Ali*_*tad 56

使用ToString()此格式:

12345.678901.ToString("0.0000"); // outputs 12345.6789
12345.0.ToString("0.0000"); // outputs 12345.0000
Run Code Online (Sandbox Code Playgroud)

在格式结束时根据需要添加零.


Dan*_*Tao 31

首先,正如Etienne所说,float在C# Single.它只是该数据类型的C#关键字.

所以你绝对可以这样做:

float f = 13.5f;
string s = f.ToString("R");
Run Code Online (Sandbox Code Playgroud)

其次,你已经多次提到数字的"格式"; 数字没有格式,只有.字符串有格式.这让我想知道:你有什么东西有格式但不是字符串?我能想到的最接近的是decimal,它确实保持了自己的精确度; 但是,decimal.ToString在这种情况下,调用应该具有您想要的效果.

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

  • 快速说明:在科学领域,区分"1.01e5"和"1.0100e5"是很常见的,因为尾随零的数量有助于有效位数,表示测量的精度. (3认同)

spr*_*ite 15

您可以将格式字符串传递给ToString方法,如下所示:

ToString("N4"); // 4 decimal points Number
Run Code Online (Sandbox Code Playgroud)

如果要查看更多修饰符,请查看MSDN - 标准数字格式字符串


Eti*_*tel 5

在 C# 中,float\xc2\xa0 是 的别名System.Single(有点像int是 的别名System.Int32)。

\n