2014-09-29 2 views
1

Как получить значение, которое после точки.Как получить значение, которое после точки

Пример: Если значение 5.4 является значением, и я хочу получить значение 4 не 0.4, как я могу это сделать?

+0

Пожалуйста, не используйте строковые операции, они очень медленные – BlackBeard

+0

wow я глубоко удивлен, что ** нет ** ответ использует оператор% (modulo)?!?!?!? –

ответ

1

Вы можете использовать функции String, для этого:

public static void main(String args[]){ 
    Double d = 5.14; 
    String afterD = String.valueOf(d); 
    afterD =afterD.substring(afterD.indexOf(".") + 1); 
    System.out.println(afterD); 
} 
  1. первую очередь преобразовать число в строку,
  2. Затем с помощью Substring получить indexof(".") + 1 затем распечатать его.

& см. Его работа.

ИЛИ Вы можете попробовать:

double d = 4.24; 
BigDecimal bd = new BigDecimal((d - Math.floor(d)) * 100); 
bd = bd.setScale(4,RoundingMode.HALF_DOWN); 
System.out.println(bd.intValue()); 

напечатает: 24

предположим, что ваш вход 4.241, то вы должны добавить 1 дополнительный 0 в BigDecimal о.-д. формуле т.е. вместо 100 это буду 1000.

+0

Ват послеDindexof m получения ошибки? –

+0

Извините, см. Обновление. –

0

одна линия ответ

int floatingpoint(float floating){ 

    return Integer.valueOf((Float.toString(floating).split(".")[1])); 



} 

, который будет делать следующее:

  1. преобразовать число, например, 56.45 в строку
  2. затем разбить строку в массив строк, где [0] = «56» и [1] = «45»
  3. , то он преобразует вторую строку в целое.

Спасибо.

+0

В значениях java float инициализируются post fix f, для ex '5.14f', в противном случае это считается двойным значением. – Aniruddha

0

Попробуйте этот путь

Double d = 5.14; 
     String afterD = String.valueOf(d); 
     String fractionPart = afterD.split("\\.")[1]; 
0
int i=(int)yourvalue; 
float/double afterDecimal= yourvalue - i; 
int finalValue = afterDecimal * precision;//define precision as power of 10 

EX. yourvalue = 2.345; 
int i=(int)yourvalue;//i=2 
float/double afterDecimal= yourvalue - i;//afterDecimal=0.345 
int finalValue = afterDecimal * precision; 
//finalValue=0.345*10 or 
//finalValue=0.345*100 or 
// finalValue=0.345*1000 

...

+0

Пожалуйста, не используйте строковые операции, они очень медленные – BlackBeard

+0

Как получить точность? – Panther

1

Код:

double i = 5.4; 
    String[] s = Double.toString(i).split("\\."); 
    System.out.println(s[1]); 

выход:

4 

Explantion:

вы можете преобразовать двойной тип строки и после этого использовать расщепленной функции, которая расщепляется преобразованный дважды в строку на две части из-за использования \\. разделителем. В конце напечатайте вторую часть, которую вы хотите.

вы можете попробовать это

код:

double i = 4.4; 
    String s = Double.toString(i); 
    boolean seenFloatingPoint = false; 

    for (int j = 0; j < s.length(); j++) { 
     if(s.charAt(j)== '.' && !seenFloatingPoint){ 
      seenFloatingPoint = true; 
     } else if (seenFloatingPoint) 
      System.out.print(s.charAt(j)); 
    } 
     System.out.println(""); 

выход:

4 
+0

он отлично работает спасибо –

+0

@ Wiz25 приветствую, что я опубликовал другое решение, поэтому, если вы хотите взглянуть на него plz :) –

0

Попробуйте этот путь

double d = 5.24; 

int i = Integer.parseInt(Double.toString(d).split("\\.")[1]); 
0

System.out.println((int)(5.4%((int)5.4)*10));

По существу 5.4 mod 5 получает вас .4 * 10 получает вас 4.

Смежные вопросы