我想将浮点值转换为字符串。
以下是我用于转换的代码。
static void Main(string[] args)
{
string s =string.Format("{0:G}", value);
Console.Write(s);
Console.ReadLine();
}
并输出为2.5
但我的问题是我希望将值设为2.50
,因为我想在我的项目中稍后将其与原始值进行比较。
所以请告诉我是否有办法吗?
答案 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.5
,2.50
和2.500
的浮动表示完全相同。
因此,基本上,您有以下可能性(按优先顺序排列):
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