【问题标题】:How do I prevent Long / Int64 ToString() converting to Exponential Format?如何防止 Long / Int64 ToString() 转换为指数格式?
【发布时间】:2015-08-07 18:17:06
【问题描述】:

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

No 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 进行了全面修复并清理了我的解决方案。它现在按预期工作。

【问题讨论】:

  • 试试ToString(CultureInfo.InvariantCulture)
  • 很快就会对此进行测试。

标签: c# .net long-integer int64


【解决方案1】:

您可以使用“0”格式。

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

输出:Str=1234567890123456789

【讨论】:

  • @RagingCain 奇怪。您可以将此断言添加到示例代码中吗? System.Diagnostics.Debug.Assert(num.ToString("0") == "1234567890123456789");
  • 我正在对我的 Visual Studio 进行修复,我认为有问题。如果可行,将很快发表评论。
  • @RagingCain 是否有可能您正在其他地方(即 Excel)使用/查看此字符串并且正在更改格式?
  • 没什么,只是一个没有最大字符大小的简单文本框。维修仍在进行中。 BigInteger 正在工作。 Just Long 被“打破”了。
  • 等一下。什么文本框?这是在网页还是表单应用程序中?你用什么文本框来显示这个?如果您在调试器中检查字符串,它的格式是否错误?也许文本框正在像这样格式化它。
【解决方案2】:

如果你真的有longulong,那么

string s = long.MaxValue.ToString() ;

返回预期的字符串"9223372036854775807"

虽然

string s = ulong.MaxValue.ToString() ;

返回预期的字符串"18446744073709551615"

确定您处理的是long 而不是浮点类型吗?

【讨论】:

  • 是的,VS2015 的完整修复似乎解决了我的问题。 ToString("0") 现在对我来说可以正常工作了。
【解决方案3】:
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

【讨论】:

    猜你喜欢
    • 2020-08-31
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    相关资源
    最近更新 更多