Как получить показатель двойника в степени 10 в java? - PullRequest
0 голосов
/ 25 октября 2018

(Извините, я не знаю, какое ключевое слово лучше всего подходит для описания этой проблемы.)

Основная проблема в том, что если у меня в java двойное число, скажем 25.003 ,как я могу знать, что это число может быть записано в 25003 x 10 ^ (- 3) , , чтобы я мог получить экспонентную часть (-3) ?

Единственное, что я хочу - это получить это число степени (-3). (поэтому я знаю, что могу умножить 25,003 на 1000, чтобы сделать его целым числом). Есть ли какой-нибудь метод, который дает мне это число степени?

Большое спасибо.

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

Это должно работать:

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
0 голосов
/ 25 октября 2018
Scanner in = new Scanner(System.in);
Double d = in.nextDouble();
String[] parts = d.toString().split("\\.");
System.out.println(parts[0] + " *10^ -" + parts[1].length());
0 голосов
/ 25 октября 2018

Это на самом деле довольно просто, если вы думаете об этом как о строке.

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
...