为什么在string和float之间转换错误?

时间:2015-11-23 08:28:16

标签: c#

请参阅下面的示例。

float maxFloat = float.MaxValue;
string s = maxFloat.ToString();
float result = float.Parse(s); // same with Convert.ToSingle(s);

bool mustEqual = (maxFloat == result);
// It returns FALSE, why?

1 个答案:

答案 0 :(得分:47)

您应该使用"R"格式字符串:

https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx#RFormatString

  

“R”或“r”往返结果:一个可以往返的字符串   相同的数字。支持者:Single,Double和BigInteger。   精度说明符:忽略。

  float maxFloat = float.MaxValue;
  string s = maxFloat.ToString("R"); // <- "R"
  float result = float.Parse(s);

  bool mustEqual = (maxFloat == result);