y*****e 发帖数: 712 | 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;
} |
h**********c 发帖数: 4120 | 2 把它转换成char array,然后swap position inline, two sub groups
or just java String |
y*****e 发帖数: 712 | 3 很感谢,照你说的改成char array,搞定了 :)
【在 h**********c 的大作中提到】 : 把它转换成char array,然后swap position inline, two sub groups : or just java String
|
b*****i 发帖数: 76 | 4 (123.456 + '').split('').reverse().join('')
JavaScript |
m*****k 发帖数: 731 | 5 321.654 is expected
【在 b*****i 的大作中提到】 : (123.456 + '').split('').reverse().join('') : JavaScript
|
U***A 发帖数: 849 | 6 这个精度还是保持一样?
【在 y*****e 的大作中提到】 : 很感谢,照你说的改成char array,搞定了 :)
|
b*****i 发帖数: 76 | 7 Sorry
+(123.456 + '').split('.').map(function(item){return item.
split('').reverse().join('')}).join('.');
[在 madmonk (madmonk) 的大作中提到:]
:321.654 is expected
:【 在 billuni (billuni) 的大作中提到: 】
:........... |