浮动到字符串转换

时间:2013-09-27 06:16:50

标签: c# string type-conversion

我想将浮点值转换为字符串。

以下是我用于转换的代码。

static void Main(string[] args)
        {
            string s =string.Format("{0:G}", value);                
            Console.Write(s);
            Console.ReadLine();
        }

并输出为2.5

但我的问题是我希望将值设为2.50,因为我想在我的项目中稍后将其与原始值进行比较。

所以请告诉我是否有办法吗?

3 个答案:

答案 0 :(得分:6)

您应该使用{0:N2}格式化为两位小数。

string.Format("{0:N2}", 2.50)

小数点后3位:

string.Format("{0:N3}", 2.50)

等等。

您也可以这样将字符串存储在字符串中,而不必担心精度,然后将您的值转换为测试比较字符串的值:

string strDecimalVal = Convert.ToString( 2.5000001);

答案 1 :(得分:5)

  

因为我希望稍后在我的项目中将其与原始值进行比较。

...然后你需要存储原始值所具有的小数位数。一旦值为浮点数,此信息就会丢失。 2.52.502.500的浮动表示完全相同。

因此,基本上,您有以下可能性(按优先顺序排列):

  • 不要在旧值和新值之间进行字符串比较。将两个值都转换为float,然后比较它们(自floats are not precise以来的误差范围)。
  • 存储旧值的小数位数,然后使用myFloat.ToString("F" + numDecimals.ToString())将其转换为字符串。
  • 将值存储为字符串而不是浮点数。显然,你将无法对该值进行数学计算。

或者,如果您不坚持使用浮点数,decimals可能适合您的目的: do 存储有效位数:

decimal x = Decimal.Parse("2.50", CultureInfo.InvariantCulture);
decimal y = Decimal.Parse("2.500", CultureInfo.InvariantCulture);

Console.WriteLine(x.ToString()); // prints 2.50
Console.WriteLine(y.ToString()); // prints 2.500

答案 2 :(得分:1)

试试这个

Console.WriteLine("{0:F2}", 2.50);
Console.WriteLine("{0:0.00}", 2.50);
Console.WriteLine("{0:N2}", 2.50);

版本1和版本2几乎相似,但3版本不同。当数量很大时,3将包括数字分隔符。

例如,以下输出454,542.50

Console.WriteLine("{0:N2}", 454542.50);

更多关于MSDN