如何防止 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
如果你真的有long
或ulong
,那么
string s = long.MaxValue.ToString() ;
returns 预期的字符串 "9223372036854775807"
.
同时
string s = ulong.MaxValue.ToString() ;
returns 预期的字符串 "18446744073709551615"
.
你确定你处理的是long
而不是某种浮点类型吗?
运行 .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
如果你真的有long
或ulong
,那么
string s = long.MaxValue.ToString() ;
returns 预期的字符串 "9223372036854775807"
.
同时
string s = ulong.MaxValue.ToString() ;
returns 预期的字符串 "18446744073709551615"
.
你确定你处理的是long
而不是某种浮点类型吗?