【问题标题】:Java long Numbers HelpJava long Numbers 帮助
【发布时间】:2011-08-07 04:13:56
【问题描述】:

所以在我的代码顶部我声明了变量 private long counter; 当我尝试给它一个非常长的数字时,它会给出一个错误,我试图这样做 counter = 1111111111111111; 那是 16 个“1”,我不断收到错误“int 类型的文字 1111111111111111 超出范围”我做错了什么?

【问题讨论】:

    标签: java variables numbers int long-integer


    【解决方案1】:

    试试这样:

    counter = 1111111111111111l;

    请注意,最后一个字符是字母“L”(当然是小写),而不是数字一。这是一个更清晰的例子:

    counter = 2222222222222222L;

    正如其他人指出的那样,大写的“L”也可以使用并且更加清晰。 Java 中的所有整数文字都被解释为ints,除非您在它们后面加上“L”(或“l”)来告诉编译器将其解释为long

    文字浮点数也会发生类似的情况,默认情况下它们被解释为doubles,除非你在它们后面加上'f'来告诉编译器将其解释为float。如:

    double num1 = 1.0;  //1.0 is treated as a literal double
    float num2 = 1.0;   //1.0 is still treated as a literal double; the compiler may complain about loss of precision
    float num3 = 1.0f;  //1.0 is treated as a float, and the compiler is happy 
    

    【讨论】:

    • 那是一个 L 结尾,给盲人。
    • 或者您可以避免任何此类视觉问题并使用大写字母L ;)
    • @Brian Roach - 谢谢,我什至没有意识到 Java 会接受大写版本。
    • 好的,如果我有“long testInt = Integer.valueOf(inputBox.getText().toString());”我试图输入的那个数字是一个长数字?
    • @Brendan Winter - 只需使用Long.valueOf,例如:long testInt = Long.valueOf(inputBox.getText().toString());. Otherwise your input value will either be truncated to Integer.MAX_VALUE` 或(更有可能) 将无法完全解析。
    【解决方案2】:

    java 编译器默认将任何数字读取为整数。 11111111111 显然超出了整数的范围。输入counter=11111111111L; 让编译器正确读取值。

    【讨论】:

      【解决方案3】:

      问题是数字文字默认为ints。要使数字文字变长,您必须使用字母字符 l(小写 L)来完成它。所以:

      long counter = 1111111111111111l;
      

      在 C# 中,您也可以使用大写 L。我不确定 Java。

      【讨论】:

      • 您可以使用任何一种,但恕我直言L 出于视觉原因更可取。
      猜你喜欢
      • 2010-12-20
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 2011-08-02
      • 1970-01-01
      相关资源
      最近更新 更多