java - 使用 Java-8 获取最重要的十进制数字
问题描述
我正在尝试获取整数的最高有效十进制数字,我的方法如下:
我正在尝试获取整数(N)中的总位数(计数);
我将整数(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和流类型中的任何方法都可以提供帮助。
解决方案
当您坚持使用 的四舍五入值的方法时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);
推荐阅读
- powershell - 替换Powershell中比较对象中的侧面指示器
- git - 如何为 gerrit 事件配置 Gerrit Webhook
- java - mongo ping 诊断命令何时返回 { ok: 0 }?
- swift - 在swift中通过类名和属性名获取属性
- typescript - 根据值向界面添加键?
- haproxy - HaProxy 保持连接的 sourceIP
- python - 如何使用 Python Regex Exact Match 提取子字符串
- lua - 在罗技 5.4 LUA 中弃用 table.getn 后,此代码似乎不再起作用
- java - Java中二叉搜索树的add方法
- php - 对多维产品数组进行排序的逻辑