写之前大概搜了下大家的思路,发现大多数都是通过寻找小数点的位置来解的。本算法通过嵌套的方法来输出任意实数
public class A2_1_3 {
public static void main(String[] args) {
out(1234.56789);
out(-1234.56789);
out(0.123456789);
out(-0.0100200030004000005);
out(0.00001);
}
public static void out(double num){
if(num < 0){
num = -num; //正负号
System.out.print("-");
}
int zhengshu = (int)num;
printInt(zhengshu); //整数
System.out.print("."); //小数点
printDouble(num - zhengshu); //小数
//System.out.println();
//System.out.println(num - zhengshu);
System.out.println();
}
public static void printInt(int zhengshu){
if(zhengshu >= 10){
printInt(zhengshu / 10);
}
System.out.print(zhengshu % 10);
}
public static void printDouble(double xiaoshu){
if(xiaoshu < 1 && xiaoshu >= 0.00001){ // 通过这里确定小数精度,现输出最高精度为0.00001(连续出现4个0的情况)
System.out.print((int)(xiaoshu*10) % 10