检索数字的第一个数字

Mic*_*oel 20 java type-conversion

我只是在学习Java,并试图让我的程序检索数字的第一个数字 - 例如543应该返回5,等等.我想转换为字符串,但我不知道如何将其转换回来?谢谢你的帮助.

int number = 534;
String numberString = Integer.toString(number);
char firstLetterChar = numberString.charAt(0);
int firstDigit = ????
Run Code Online (Sandbox Code Playgroud)

Sea*_*ean 33

几乎肯定比使用字符串更有效:

int firstDigit(int x) {
    while (x > 9) {
        x /= 10;
    }
    return x;
}
Run Code Online (Sandbox Code Playgroud)

(仅适用于非负整数.)


Jor*_*lan 27

    int number = 534;
    int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));
Run Code Online (Sandbox Code Playgroud)

  • 老实说**所以**比其他地方的所有深奥/过于复杂和算法的答案更简单/可用,例如http://stackoverflow.com/questions/2051817/return-first-digit-of-an-整数 - 也许这不会在具有20位数字的大型机科学应用程序中扩展......但是谁还在编写那些??? (3认同)

Ben*_*ett 19

firstDigit = number/((int)(pow(10,(int)log(number))));
Run Code Online (Sandbox Code Playgroud)

这应该使用数学而不是字符串来获得您的第一个数字.

在您的示例中,log(543)= 2.73,其中转换为int是2. pow(10,2)= 100 543/100 = 5.43但是因为它是一个int,所以它被截断为5

  • 看起来很有趣,但这样做有什么好处吗?如果我正在读那行,我不是数学教授,我不知道它做了什么:-) (2认同)
  • 它应该是 log10,因为在数学库中 log 是以 2 为底的对数。除数 = (int)(Math.pow(10,(int) Math.log10(rem))); 左数字 = (int) (rem * 1.0 / 除数); (2认同)