Java中逗号后面的数字

时间:2011-04-30 20:46:27

标签: java

如何在Java中使用逗号后获取n个数字?

...
double numb = 123.45;
void lastNumber(int n){
   // here
}
...

(在本例中n = 2,逗号后面有两个数字)

4 个答案:

答案 0 :(得分:2)

  • 乘以10 ^ n
  • floor或cast to int
  • 除以10 ^ n

或使用

  • 的BigDecimal

答案 1 :(得分:2)

有点难看:

public long getFraction(double num, int digits) {
    int multiplier = POWERS_OF_TEN[digits];
    long result = ((long) (num * multiplier)) - (((long) num) * multiplier);
    return result;
}

其中POWERS_OF_TEN是预先计算的10的幂数组(0 = 1,1 = 10,2 = 100,3 = 1000等)

答案 2 :(得分:2)

double numb = 123.45实际上不是123.45,而是二进制表示中非常接近它的东西。

如果您需要完全123.45,则需要BigDecimal类,例如

BigInteger numb = new BigInteger("123.45"); // or
BigInteger numb = BigInteger.valueOf(12345, 2);

一个简短的工作程序,产生45:

import java.math.BigDecimal;

public class Main {

    public static void main(String[] args) {
        BigDecimal numb = BigDecimal.valueOf(12345,2);
        BigDecimal remainder = numb.remainder(BigDecimal.ONE);
        System.out.println(remainder.unscaledValue());
    }
}

BigIntegers与之合作并不好玩,但在处理财务方面非常好。它们并不快,但如果你只有一个不应该成为问题的数字:)

答案 3 :(得分:2)

这个比较简单。请考虑一下,而不仅仅是给出答案。忘记Java - 从数学的角度思考你想做什么。从问题中,您需要小数点后面的数字 - 数字的小数部分 - 0.45。怎么从123.45得到0.45?

想想你需要减去什么,你怎么得到这个数字? 有一个数学函数,“floor”,它给你一个没有小数部分的数字。 (至少对于正数。)