(对不起,我不知道什么是描述此问题的最佳关键字。)
主要问题是,如果我在Java中有一个双精度数字,例如 25.003 ,我怎么知道这个数字可以用 25003 x 10 ^(-3)< / strong>,以便获取指数部分(-3)?
我唯一想做的就是获取那个指数数(-3)。(所以我知道我可以将25.003乘以1000使其成为整数)是否有任何方法可以使我得到指数数字?
非常感谢。
答案 0 :(得分:1)
如果您将其视为字符串,这实际上非常简单。
private static int getExponentForNumber(double number)
{
String numberAsString = String.valueOf(number);
return numberAsString.substring(numberAsString.indexOf('.') + 1).length() * -1;
}
这只是返回“。”之后的长度。这是你的负面指数。所以您真的可以像这样使用它:
int exponent = getExponentForNumber(25.003);
int basis = Integer.valueOf(String.valueOf(25.003).replace(".", ""));
String expression = "25.003 equals " + basis + "*10^" + exponent;
System.out.println(expression);
25.003 equals 25003*10^-3
答案 1 :(得分:1)
这应该有效:
private static int getExponent(double number)
{
String str = String.valueOf(number);
int pointIndex = str.indexOf('.');
if (pointIndex == -1 || pointIndex == str.length() - 1)
return 0;
while (str.endsWith("0")) {
str = str.substring(0, str.length() - 1);
}
pointIndex = str.indexOf('.');
if (pointIndex == str.length() - 1)
return 0;
String[] splitted = str.split("\\.");
return -splitted[1].length();
}
public static void main(String[] args) {
double d1 = 12.36;
double d2 = .36;
double d3 = 12.;
double d4 = 0.101;
double d5 = 15;
System.out.println(d1 + " " + getExponent(d1));
System.out.println(d2 + " " + getExponent(d2));
System.out.println(d3 + " " + getExponent(d3));
System.out.println(d4 + " " + getExponent(d4));
System.out.println(d5 + " " + getExponent(d5));
}
打印
12.36 -2
0.36 -2
12.0 0
0.101 -3
15.0 0
答案 2 :(得分:1)
Scanner in = new Scanner(System.in);
Double d = in.nextDouble();
String[] parts = d.toString().split("\\.");
System.out.println(parts[0] + " *10^ -" + parts[1].length());