Как получить десятичные части в целых числах от двойного? - PullRequest
3 голосов
/ 05 апреля 2019

Как разделить двойное число на два целых числа?Первое число до и второе число после десятичной точки.Например:

            double doub = 543.345671;
            int num1 = (int) doub; //543
            int num2 = getNumAfterDecimal(doub-num1); //return 345671

Мне нужна десятичная часть до целого числа.

Ответы [ 5 ]

3 голосов
/ 05 апреля 2019

Используйте Double.toString() для сопоставления double с String: Double.toString(doub), затем используйте String.split("\\."), чтобы получить различные детали как String с.Затем, необязательно, Integer.valueOf() для анализа этих значений как Integer с:

double doub = 543.345671;
// Here, you want to split the String on character '.'
// As String.split() takes a regex, the dot must be escaped. 
String[] parts = Double.toString(doub).split("\\.");
System.out.println(Integer.valueOf(parts[0]));
System.out.println(Integer.valueOf(parts[1]));

Вывод:

543
345671
2 голосов
/ 05 апреля 2019

Это зависит от того, сколько цифр вы хотите после десятичной точки, но это суть:

double d = doub - (int)doub; // will give you 0.xyz
int result = d * 1000; // this is for 3 digits, the number of zeros in the multiplier decides the number of digits 
2 голосов
/ 05 апреля 2019

Как я вижу,

Double d=543.345671;
String line=String.valueOf(d);
String[] n=line.split("\\.");
int num1=Integer.parseInt(n[0]);
int num2=Integer.parseInt(n[1]);
2 голосов
/ 05 апреля 2019

Получить с помощью регулярного выражения,

double doub = 543.345671;
String data[] = String.valueOf(doub).split("\\.");
System.out.println("Before decimal: " + Integer.parseInt(data[0]) + ", After decimal: " + Integer.parseInt(data[1]));

Печать

Before decimal: 543, After decimal: 345671
1 голос
/ 05 апреля 2019

Это то, что мне нужно. Спасибо, Нир Леви ! Но иногда возможны ошибки округления.

    double doub = 543.04;
    int num1 = (int) doub; //543
    int num2 = (int) ((doub-num1)*1000000); //39999

Я добавил Math.round (), чтобы правильно получить десятичную часть.

    double doub = 543.04;
    int num1 = (int) doub; //543
    int num2 = (int) Math.round((doub-num1)*1000000); //40000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...