京东茎动难进洞,奶茶奶差但耐插 (转载)# Joke - 肚皮舞运动
y*e
1 楼
我以前在板上看到了,记了个思路,但是忘记帖子的地址了,
题目就是reverse一个double还是float number(记不太清了)
比如123.456, 转成 321.654
思路是先把123转成321,然后把0.456扩大成只有整数(也就是456),记录下来小数点
移了几位,然后反转整数456,得到654, 再把小数点移回去成0.654, 和前面得到的
321相加。
我今天按这个思路写了写,发现小数点右移的过程有点问题,因为我不太清楚java到底
怎么存小数的,给的stop condition不对啊,永远meet不了
大家能帮我看看这行怎么不对吗?
while((decimalPart - (int)decimalPart) > precision)
谢谢!!!
public static double reverse(double number){
int intPart = (int)number;
double decimalPart = number - intPart;
int revInt = reverse(intPart);
int leftShift = 0;
double precision = 0.0000000001;
while((decimalPart - (int)decimalPart) > precision){
decimalPart *= 10;
leftShift++;
}
int revDec = reverse((int)decimalPart);
return (revInt + (revDec / Math.pow(10, leftShift)));
}
private static int reverse(int N){
int result = 0;
while(N > 0){
result = result * 10 + N % 10;
N = N / 10;
}
return result;
}
题目就是reverse一个double还是float number(记不太清了)
比如123.456, 转成 321.654
思路是先把123转成321,然后把0.456扩大成只有整数(也就是456),记录下来小数点
移了几位,然后反转整数456,得到654, 再把小数点移回去成0.654, 和前面得到的
321相加。
我今天按这个思路写了写,发现小数点右移的过程有点问题,因为我不太清楚java到底
怎么存小数的,给的stop condition不对啊,永远meet不了
大家能帮我看看这行怎么不对吗?
while((decimalPart - (int)decimalPart) > precision)
谢谢!!!
public static double reverse(double number){
int intPart = (int)number;
double decimalPart = number - intPart;
int revInt = reverse(intPart);
int leftShift = 0;
double precision = 0.0000000001;
while((decimalPart - (int)decimalPart) > precision){
decimalPart *= 10;
leftShift++;
}
int revDec = reverse((int)decimalPart);
return (revInt + (revDec / Math.pow(10, leftShift)));
}
private static int reverse(int N){
int result = 0;
while(N > 0){
result = result * 10 + N % 10;
N = N / 10;
}
return result;
}