如何在Java中使用逗号后获取n
个数字?
...
double numb = 123.45;
void lastNumber(int n){
// here
}
...
(在本例中n = 2,逗号后面有两个数字)
答案 0 :(得分:2)
或使用
答案 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”,它给你一个没有小数部分的数字。 (至少对于正数。)