得到浮点数的第N个小数

时间:2014-09-25 21:10:15

标签: java decimal

我试图使用if语句比较浮点数中的小数,但我不知道该怎么做。我搜索了很多,但没有得到答案。

例如:

如果我有像这样的浮点数5.26,如果第二个小数(即6)是否大于/小于(某个数字),我该怎么说?!

我希望明白这一点。

重新形成Qs:

如果我有一个小数点后面有2个数字的浮点数,我想检查第二个数字是否大于“5” - 例如 - 或者不是?

3 个答案:

答案 0 :(得分:5)

获取浮动的第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

答案 1 :(得分:1)

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

制作一串它; 循环穿过字符串; 检查你想要检查的内容。

答案 2 :(得分:1)

您可以使用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);
    }
}