JSP / Java의 double에서 전체 및 부분 부분을 어떻게 얻습니까? 값이 3.25이면을 얻고 싶습니다 fractional =.25
.whole = 3
Java에서 어떻게 할 수 있습니까?
답변
http://www.java2s.com/Code/Java/Data-Type/Obtainingtheintegerandfractionalparts.htm
double num;
long iPart;
double fPart;
// Get user input
num = 2.3d;
iPart = (long) num;
fPart = num - iPart;
System.out.println("Integer part = " + iPart);
System.out.println("Fractional part = " + fPart);
출력 :
Integer part = 2
Fractional part = 0.2999999999999998
답변
double value = 3.25;
double fractionalPart = value % 1;
double integralPart = value - fractionalPart;
답변
이 1 년 된 질문은 질문 주제를 수정 한 사람에 의해 시작되었고이 질문에으로 태그가 지정 jsp되었고 여기에 아무도 JSP 대상 답변을 제공 할 수 없었 으므로 여기에 JSP 대상 기여가 있습니다.
JSTL을 사용하십시오 ( jstl-1.2.jar 를 /WEB-INF/lib
) fmt taglib. <fmt:formatNumber>
당신이 원하는 것을 정확히 maxFractionDigits
하고 maxIntegerDigits
속성의 도움으로 아주 쉬운 방식으로 하는 태그 가 있습니다 .
여기에 SSCCE가 있습니다. copy’n’paste’n’run 입니다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%
// Just for quick prototyping. Don't do this in real! Use servlet/javabean.
double d = 3.25;
request.setAttribute("d", d);
%>
<!doctype html>
<html lang="en">
<head>
<title>SO question 343584</title>
</head>
<body>
<p>Whole: <fmt:formatNumber value="${d}" maxFractionDigits="0" />
<p>Fraction: <fmt:formatNumber value="${d}" maxIntegerDigits="0" />
</body>
</html>
산출:
전체 : 3
분수 : .25
그게 다야. 원시 Java 코드를 사용하여 마사지 할 필요가 없습니다.
답변
원래 질문은 분수와 전체 부분이 아닌 지수와 가수를 요구했습니다.
double에서 지수와 가수를 얻으려면 IEEE 754 표현 으로 변환하고 다음 과 같이 비트를 추출 할 수 있습니다 .
long bits = Double.doubleToLongBits(3.25);
boolean isNegative = (bits & 0x8000000000000000L) != 0;
long exponent = (bits & 0x7ff0000000000000L) >> 52;
long mantissa = bits & 0x000fffffffffffffL;
답변
주 논리는 먼저 소수점 뒤에 몇 자리가 있는지 찾아야합니다.
이 코드는 최대 16 자리 숫자에 대해 작동합니다. BigDecimal을 사용하는 경우 최대 18 자리까지만 실행할 수 있습니다. 입력 값 (귀하의 숫자)을 변수 “num”에 넣으십시오. 여기에 예를 들어 하드 코딩했습니다.
double num, temp=0;
double frac,j=1;
num=1034.235;
// FOR THE FRACTION PART
do{
j=j*10;
temp= num*j;
}while((temp%10)!=0);
j=j/10;
temp=(int)num;
frac=(num*j)-(temp*j);
System.out.println("Double number= "+num);
System.out.println("Whole part= "+(int)num+" fraction part= "+(int)frac);
답변
IEEE 이중 부동 소수점 숫자의 가수와 지수는 다음과 같은 값입니다.
value = sign * (1 + mantissa) * pow(2, exponent)
가수가 0.101010101_base 2 형식이고 (즉, 가장 중요한 비트가 이진 점 이후로 이동 됨) 지수가 바이어스에 맞게 조정 된 경우.
1.6 이후, java.lang.Math는 편향되지 않은 지수 (getExponent (double)라고 함)를 얻는 직접적인 방법도 제공합니다.
그러나 당신이 요구하는 숫자는 숫자의 정수 부분과 분수 부분이며, 다음을 사용하여 얻을 수 있습니다.
integral = Math.floor(x)
fractional = x - Math.floor(x)
(floor(-3.5) == -4.0)
두 부분을 원하는 이유에 따라 음수를 다르게 처리하고 싶을 수도 있습니다 .
이 가수와 지수를 부르지 말 것을 강력히 제안합니다.
답변
이것이 더 빠른지 모르겠지만 사용하고 있습니다.
float fp = ip % 1.0f;
