public static void main(String[] args) { BigDecimal a = new BigDecimal(22); a = a.divide(new BigDecimal(7), 100,BigDecimal.ROUND_HALF_UP); System.out.println(a); }输出 3.1428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571429
BigDecimal a = new BigDecimal(22); BigDecimal b = new BigDecimal(7); System.out.println(a.divide(b,100,RoundingMode.UP));
zan 5#确实是好的法子...JAVA 中主要是方法太多 ..多用 多看 自然会明白
不用计算啦,像 2 楼所说的可以采用循环节分母为 7 的循环节一直是 1、4、2、8、5、7 这几个数转来转去的。public class Test { public static void main(String[] args) { String repetend = "142857"; int n = 100; char c = repetend.charAt((n - 1) % repetend.length()); System.out.println(c); } }
public class Test { public static void main(String[] args) { System.out.println(div7(22, 100)); // 22/7 的第 100 位 System.out.println(div7(33, 100)); // 33/7 的第 100 位 } public static int div7(int numerator, int digit) { int mod = numerator % 7; if(mod == 0) { return 0; } String repetend = "142857"; int[] shift = {0, 2, 1, 4, 5, 3}; char c = repetend.charAt((digit + shift[mod - 1] - 1) % 6); return c - '0'; } }
可以用unix/linux上的bc来计算 echo -e "scale=100\n22/7" | bc -l
楼主截止到2008-06-21 10:10:38的汇总数据:
注册日期:2008-2-28
上次登录:2008-6-21
发帖数:1 发帖分:20
结贴数:0 结贴分:0
结贴率:0.00 % 结分率:0.00 %
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
BigDecimal a = new BigDecimal(22);
a = a.divide(new BigDecimal(7), 100,BigDecimal.ROUND_HALF_UP);
System.out.println(a);
}输出
3.1428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571429
BigDecimal b = new BigDecimal(7);
System.out.println(a.divide(b,100,RoundingMode.UP));
public static void main(String[] args) {
String repetend = "142857";
int n = 100;
char c = repetend.charAt((n - 1) % repetend.length());
System.out.println(c);
}
}
public static void main(String[] args) {
System.out.println(div7(22, 100)); // 22/7 的第 100 位
System.out.println(div7(33, 100)); // 33/7 的第 100 位
} public static int div7(int numerator, int digit) {
int mod = numerator % 7;
if(mod == 0) {
return 0;
}
String repetend = "142857";
int[] shift = {0, 2, 1, 4, 5, 3};
char c = repetend.charAt((digit + shift[mod - 1] - 1) % 6);
return c - '0';
}
}
echo -e "scale=100\n22/7" | bc -l