2014-09-29 2 views
1

포인트 뒤의 값을 얻는 방법.포인트 뒤의 값을 얻는 방법

예 : 5.4가 값이고 4가 0.4가 아닌 값을 가져 오려면 어떻게해야합니까?

+0

문자열 연산을 사용하지 마십시오. 매우 느립니다. – BlackBeard

+0

와우, ** 놀랍게도 ** 대답은 % (모듈러) 연산자를 사용합니까?!?!?!? –

답변

1

당신은 그것을 위해 문자열 함수를 사용할 수 있습니다

모든
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. 그런 다음 다음을 인쇄 할 하위 문자열이 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입니다 가정은 당신은 BigDecimal BD 식 즉 대신 100의이 1000있을 것이다에 0 추가 1을 추가해야합니다.

+0

와트는 오류가 발생 했습니까? –

+0

죄송합니다, 업데이트를 참조하십시오. –

0

한 줄 응답이 다음과 같이 수행 할

int floatingpoint(float floating){ 

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



} 

이다 : 다음 문자열 배열에서 문자열을 분할

  1. 문자열
  2. 에 56.45 EG 수 변환 여기서 [0] = "56"및 [1] = "45"
  3. 그러면 두 번째 문자열을 정수로 변환합니다.

감사합니다.

+0

java float 값은 ex 5.14f의 경우 post fix f로 초기화됩니다. 그렇지 않으면 double 값으로 간주됩니다. – 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 * 104입니다.

관련 문제