【问题标题】:Float to String format specifier浮点到字符串格式说明符
【发布时间】:2011-06-19 11:42:52
【问题描述】:

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

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

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

更新 2-3-11:

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

【问题讨论】:

  • 小数点后多少位?如果你想保持这种动态,假设值是正确的浮点数,那么使用 .ToString("G")
  • 数字会有所不同,为简单起见,我想说小数点后的数字范围可能在 1 到 5 之间。
  • .ToString("G") 最适合可变范围
  • 尝试了“G”说明符,但是当遇到像 999.0 这样的数字时,它返回 999。我想保留尾随零,作为一个字符串,我希望它是“999.0”跨度>
  • 如果您想要文本文件中的字符串并且不需要实际值进行某些计算,为什么不直接将值读取为字符串而不将它们解析为浮点数有吗?如果您确实需要这些值,请解析它们但保留原始字符串。无论哪种方式,您都可以查看我的帖子,以便使用 ToString() 方法的格式参数更轻松地格式化数字。

标签: c# parsing numbers string-formatting


【解决方案1】:

以这种格式使用ToString()

12345.678901.ToString("0.0000"); // outputs 12345.6789
12345.0.ToString("0.0000"); // outputs 12345.0000

在格式末尾添加尽可能多的零。

【讨论】:

  • 嗨 Aliostad,这个问题,我希望字符串的格式与数字的格式完全相同。对于您的第二个示例,我希望它是“12345.0”作为字符串,而不是“12345.0000”。
  • @kingrichard2005- 什么信息告诉您浮点数是 12345.0 还是 12345.0000?它们相当于浮点数。
  • 我正在从 txt 文件中读取这些文件。也许更好的选择是确定作为字符串读入的数字是否是十进制数。
  • 问题是这限制了精度。
【解决方案2】:

首先,作为Etienne says,C#中的float Single。它只是该数据类型的 C# 关键字。

所以你绝对可以这样做:

float f = 13.5f;
string s = f.ToString("R");

其次,您曾多次提及号码的“格式”;数字没有格式,它们只有字符串有格式。这让我想知道:你拥有的这个有格式但不是字符串的东西是什么?我能想到的最接近的是decimal,它确实保持了自己的精度;但是,在这种情况下,简单地调用 decimal.ToString 应该会产生您想要的效果。

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

【讨论】:

  • 快速说明:在科学领域,通常区分“1.01e5”和“1.0100e5”,因为尾随零的数量有助于有效数字的数量,它表示测量的精度.
【解决方案3】:

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

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

如果您想查看更多修饰符,请查看MSDN - Standard Numeric Format Strings

【讨论】:

    【解决方案4】:

    在 C# 中,floatSystem.Single 的别名(有点像 intSystem.Int32 的别名)。

    【讨论】:

      猜你喜欢
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多