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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

参考技术A 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
参考技术B 使用bigdecimal类型

java - 如何将浮点数转换为 BigDecimal? [复制]

【中文标题】java - 如何将浮点数转换为 BigDecimal? [复制]【英文标题】:java - How to convert Float to BigDecimal? [duplicate] 【发布时间】:2017-09-16 21:54:39 【问题描述】:

我想知道如何将java.lang.Float 转换为java.Math.BigDecimal。这可以实现吗?

【问题讨论】:

如果你需要BigDecimal精度,首先不要使用float,至少使用double或将原始数字解析为String 【参考方案1】:

是的,试试这个,

BigDecimal value = new BigDecimal(Float.toString(123.4f));

【讨论】:

以上是关于JAVA如何将浮点数输出为指定位数的科学计数法?的主要内容,如果未能解决你的问题,请参考以下文章

python格式化输出

科学记数法数字转换/保留数值小数点位数(数字格式化)

java - 如何将浮点数转换为 BigDecimal? [复制]

如何在不进行任何舍入的情况下将浮点数转换为小数点后 4 位?

如何将浮点数保存为 2 个字节?

Java中double类型如何避免显示为科学计数法