【问题标题】:Can't convert number to Int C#无法将数字转换为 Int C#
【发布时间】:2016-02-11 11:51:51
【问题描述】:

我正在尝试制作一个小型应用程序。它在服务器响应中获取一个 ID,但它是字符串格式的。我需要将其转换为int,但它似乎不起作用。例如,该 ID 是 76561198078450726Int.TryParse 返回0

其他方法也不起作用。你有什么想法,有什么问题吗?

编辑:非常感谢您提供的有用答案。我不知道,我怎么会错过它。谢谢!

【问题讨论】:

  • TryParse 从不返回0,它返回truefalse,正如@Mark 已经提到的。您的实际意思是它的out-param 可能是0,这是绝对有效的。
  • 是的,我就是这个意思..

标签: c# .net string int


【解决方案1】:

这是一个非常大的数字。 Int 只转到2147483647

使用long 或查看System.Numerics.BigInteger 以进一步扩大:https://msdn.microsoft.com/en-us/library/system.numerics.biginteger.aspx

编辑: 此外,int.TryParse 返回 truefalse 并且 that 是您应该检查的内容,而不是如果 out 值为 0。因为 int i; int.TryParse("0", out i); 也是完全有效的。 p>

【讨论】:

    【解决方案2】:

    76561198078450726 远远超出int 的范围(即-2,147,483,648 到2,147,483,647),请改用long

    if (long.TryParse(value, out myValue)) ...
    

    【讨论】:

      【解决方案3】:

      由于int.MaxValue2147483647,因此对于 32 位有符号整数,该值太大。我建议将其解析为 long

      long l = long.Parse("76561198078450726");
      

      【讨论】:

        【解决方案4】:

        Int32.MaxValue 是 2,147,483,647。当 TryParse 失败时,它返回 0。

        试试long.TryParse()

        Reference

        【讨论】:

          猜你喜欢
          • 2014-05-18
          • 1970-01-01
          • 2016-06-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-14
          • 2014-04-02
          • 2022-06-11
          • 2020-08-10
          相关资源
          最近更新 更多