本文目录一览:
java 科学计数法怎么转换为数字
首先,需要将科学计数法转换成一下:
例如:
BigDecimal bd = new BigDecimal("3.40256010353E11");
然后转换成字符串:
String str = bd.toPlainString();
如果这个数字的长度是在int的范围内的话,是可以转换成int类型:
int a = Integer.parsInt(str);
如果这个数字的长度不是在Int范围内的话,得到的就不是你想要的数字了!
JAVA 关于科学计数法的解决
import java.util.Arrays;
class Animal
{
static String str = "3.4E-5";
static double 转换后的数 = 0;
public static void main(String[] args)
{
Animal animal = new Animal();
转换后的数 = animal.conversion(str);
double[] buf = {2,0.1234,转换后的数,0.1234,0.1234};
String[] ss = new String[buf.length];
Arrays.sort(buf);//从小到大排列
for(int i = 0; i buf.length;i++)
{
if(buf[i] == 转换后的数)//如果是原来的科学计数,将原来的str存至ss数组
{
ss[i] = str;
}
else
ss[i] = buf[i] + "";
}//打印出排列后的结果
System.out.print("比较后:" );
for(String s : ss)
System.out.print(s + " "); }
//将科学计数转换成正常数字
public double conversion(String str)
{
String[] s = str.split("E-");
double num1 = Double.parseDouble(s[0]);
double num2 = Double .parseDouble(s[1]);
return num1 * Math.pow(10d, num2);
}
} 运行结果:比较后:0.1234 0.1234 0.1234 2.0 3.4E-5
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$"表示第几个变量。
}