JAVA如何将浮点数输出为指定位数的科学计数法?

JAVA如何将浮点数输出为指定位数的科学计数法?
我不太理解题目,希望就解释一下

希望可以帮到你:

@Test
public void test4(){
        float exp1 = 1.39e-43f;  
        System.out.println("科学计数法1==" + exp1);// 表示1.39乘以10的负43次方  
  
        double exp2 = 47 * 10000000000000000000000000000000000000d;  
        System.out.println("科学计数法2==" + exp2);// 表示47乘以10的37次方===4.7E38  
  
        float exp3 = 1e-43f;// 此时43后面必须加上f,否则会报错.编译器同擦汗那个会将指数最为双精度处理。  
        System.out.println("科学计数法3==" + exp3);// 表示1乘以10的负43次方  
        System.out.printf("%9.2f",exp3);
        System.out.printf("%-9.2f",exp3);
//         long n = 200;// 此时不需要在200后面加l,因为编译器能识别这个类型,在这里不存在含混不清的地方。  
//         System.out.println(n);  
//         
//         double d = 345.678;  
//         String s = "hello!";   
//         int i = 1234;  
//         //"%"表示进行格式化输出,"%"之后的内容为格式的定义。  
//         System.out.printf("%f",d);//"f"表示格式化输出浮点数。  
//         System.out.printf("%9.2f",exp3);//"9.2"中的9表示输出的长度,2表示小数点后的位数。  
//         System.out.printf("%+9.2f",d);//"+"表示输出的数带正负号。  
//         System.out.printf("%-9.4f",d);//"-"表示输出的数左对齐(默认为右对齐)。  
//         System.out.printf("%+-9.3f",d);//"+-"表示输出的数带正负号且左对齐。  
//         System.out.printf("%d",i);//"d"表示输出十进制整数。  
//         System.out.printf("%o",i);//"o"表示输出八进制整数。  
//         System.out.printf("%x",i);//"d"表示输出十六进制整数。  
//         System.out.printf("%#x",i);//"d"表示输出带有十六进制标志的整数。  
//         System.out.printf("%s",s);//"d"表示输出字符串。  
//         System.out.printf("输出一个浮点数:%f,一个整数:%d,一个字符串:%s",d,i,s);//可以输出多个变量,注意顺序。  
//         System.out.printf("字符串:%2$s,%1$d的十六进制数:%1$#x",i,s);//"X$"表示第几个变量。  
}

追问

为什么
System.out.printf("%9.2f",exp3);
System.out.printf("%-9.2f",exp3);
这两段代码我的输出结果是0.00

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-01-19
JAVA输出指定位数的科学计数方法:
public static String parseToCientificNotation(double value) {
int cont = 0;
java.text.DecimalFormat DECIMAL_FORMATER = new java.text.DecimalFormat("0.##");
while (((int) value) != 0) {
value /= 10;
cont++;
}
return DECIMAL_FORMATER.format(value).replace(",", ".") + " x10^ -" + cont;
}

调用方法:
parseToCientificNotation(123332.4);
输出:0.1233324 x10^ 6
第2个回答  2015-10-30
使用bigdecimal类型
相似回答