如何防止 Long / Int64 ToString() 转换为指数格式?

How do I prevent Long / Int64 ToString() converting to Exponential Format?

运行 .NET 4.6 和 x64 构建选项。

没有 ToString() 格式选项似乎适用于长度超过 15 位的数字,因为它将它们转换为指数格式。

到目前为止我尝试过的:

long.ToString("#");
long.ToString("G");
long.ToString("0");
long.ToString("#,#");
long.ToString("0,0");

唯一部分起作用的是:

long.ToString("0,0");  //Ex.) 5,149,673,432,170,230

不过,我更喜欢普通数字。我不想使用:

String.Replace(",", "");

有什么建议吗?

编辑: 解决方案是一个已经尝试过的。 .ToString("0")

运行 全面修复 VS2015 并清理我的解决方案。它现在按预期工作。

您可以使用“0”格式。

long num = 1234567890123456789;
System.Diagnostics.Debug.WriteLine("Str=" + num.ToString("0"));

输出:Str=1234567890123456789

Int64 bigNumber =  9223372036854775806L;
String s1 = String.Format("{0:g}", bigNumber);
String s2 = bigNumber.ToString("G");
Debug.WriteLine("s1 = {0}, s2 = {1}", s1, s2);

写道:

s1 = 9223372036854775806, s2 = 9223372036854775806

如果你真的有longulong,那么

string s = long.MaxValue.ToString() ;

returns 预期的字符串 "9223372036854775807".

同时

string s = ulong.MaxValue.ToString() ;

returns 预期的字符串 "18446744073709551615".

确定你处理的是long而不是某种浮点类型吗?