首页 > 解决方案 > 使用 Java-8 获取最重要的十进制数字

问题描述

我正在尝试获取整数的最高有效十进制数字,我的方法如下:

  1. 我正在尝试获取整数(N)中的总位数(计数);

  2. 我将整数(N)除以 1(....count 乘以 0)。

我已经完成了以下代码,它工作正常,我只想使用 java-8 来实现它,以防万一。

int N = 456778889;
double expo = Math.log10(N);
int expNum = (int)Math.floor(expo)+1;  //gets the total digits in the Integer N

现在因为我有数字 N 中的总位数,所以我可以将 N 除以 1,然后是总的零个数,以实现这个 1,然后是 X 个零,我的逻辑如下:

    StringBuilder sb = new StringBuilder("1");
    sb.setLength(expNum);
    String f = sb.toString().replaceAll("[^0-9]","0"); // It makes the 1 followed by X amount of zero that i require to get my MSB
    int mostSigNum = N/(Integer.valueOf(f));
    System.out.println(mostSigNum);

我知道我的方法有点不同,因为我主要使用日志和其他数学函数,但我真的想以不同的方式做。

java 8类型中的任何方法都可以提供帮助。

标签: javajava-8

解决方案


当您坚持使用 的四舍五入值的方法时log10,您还应该始终使用Math.pow(10, …)进入另一个方向,而不是突然切换到String操纵。

int maxi = (int)(N/Math.pow(10, Math.floor(Math.log10(N))));

如前所述,在评论中,当您使用String操作时,Integer.toString(N).substring(0,1)会导致一个完整的解决方案。或者,要获取int值:

int maxi = Character.digit(String.valueOf(N).charAt(0), 10);

推荐阅读