6

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

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

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

它输出为2.5

但我的问题是我想得到这个值,2.50因为我想在我的项目后期将它与原始值进行比较。

所以请建议我是否有任何方法可以做到这一点?

4

3 回答 3

9

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

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

对于 3 位小数:

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

等等。

您也可以通过这种方式将值存储在字符串中,而无需担心精度,然后将您正在测试的值转换为字符串进行比较:

string strDecimalVal = Convert.ToString( 2.5000001);
于 2013-09-27T06:18:34.933 回答
5

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

...那么您将需要存储原始值的小数位数。一旦值为浮点数,此信息就会丢失。浮点表示完全相同。2.52.502.500

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

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

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
于 2013-09-27T06:29:26.367 回答
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

于 2013-09-27T06:25:46.087 回答