繁体   English   中英

获取小数点后第N位

[英]Getting the Nth digit after the decimal point

如何从小数点后的十进制数中获取第 N 位?

例如:

如果十进制数是64890.1527 ,那么第一个数字是1第二个数字是5 ,第三个数字是2 ,等等。

获取浮点数的第 N 个小数

这是获取浮点数小数点后第 N 位的技巧:

  • 取绝对值
  • 乘以 10 n
  • 转换为 int
  • 模数乘以 10

例子

得到第三位小数 0.12438。 我们希望答案是 4。

  • 0.12438
    • 取绝对值
  • 0.12438
    • 乘以 10 3
  • 124.38
    • 转换为 int
  • 124
    • 模数乘以 10
  • 4个

怎么运行的

乘以 10 n得到你关心的小数到个位。 转换为 int 会丢弃小数点。 模数除以 10 的位置以外的所有位置。

如果输入为负,我们取绝对值。

代码片段

float num = 0.12438f;
int thirdDecimal = (int)(Math.abs(num) * Math.pow(10,3)) % 10; // Equals 4
int fifthDecimal = (int)(Math.abs(num) * Math.pow(10,4)) % 10; // Equals 3

不确定这是否是最佳解决方案,但是......

把它做成一串; 遍历字符串; 检查你想检查的。

您可以使用Double并在其上调用toString ,然后像这样遍历 charArray

public class TestIndexOf {
    public static void main(String[] args) {
        Double d = 5.26;
        String source = d.toString();

        char[] chars = source.toCharArray();

        char max = source.charAt(source.length() - 1);
        boolean isMax = true;
        for (char aChar : chars) {
            if (max < aChar) {
                max = aChar;
                isMax = false;
            }
        }
        System.out.println(max + " is max?" + isMax);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM