Comment obtenir des parties entières et des fractions de double dans JSP / Java? Si la valeur est 3,25, je souhaite obtenir fractional =.25
, whole = 3
Comment pouvons-nous faire cela en Java?
Tous les indicateurs sont très appréciés.
Comment obtenir des parties entières et des fractions de double dans JSP / Java? Si la valeur est 3,25, je souhaite obtenir fractional =.25
, whole = 3
Comment pouvons-nous faire cela en Java?
Tous les indicateurs sont très appréciés.
Google vous aiderait si vous utilisiez les bons termes pour rechercher "obtenir une fraction complète du double 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);
Les sorties:
Integer part = 2
Fractional part = 0.2999999999999998
Depuis ce 1 ans question a été soulevée par quelqu'un qui a corrigé la question, et cette question est balisé avec jsp, et personne ici n'a été en mesure de donner une JSP réponse ciblée, voici ma JSP-contribution ciblée.
L'utilisation de JSTL (il suffit de déposer jstl-1.2.jar en /WEB-INF/lib
) fmt taglib. Il y a un <fmt:formatNumber>
balise qui fait exactement ce que vous voulez et dans un très facile avec l'aide de l' maxFractionDigits
et maxIntegerDigits
attributs.
Voici un SSCCE, il suffit de copier "" coller'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>
Sortie:
Ensemble: 3
Fraction: .25
C'est tout. Pas besoin de massage avec l'aide de matières premières de code Java.
Comme certains l'ont souligné (et j'aurais probablement dû comprendre compte tenu de votre exemple), vous vouliez des parties entières et des fractions.
Pour réellement vouloir l'exposant et la mantisse, vous pouvez le convertir en représentation IEEE 754 et extraire les bits comme ceci:
long bits = Double.doubleToLongBits(3.25);
boolean isNegative = (bits & 0x8000000000000000L) != 0;
long exponent = (bits & 0x7ff0000000000000L) >> 52;
long mantissa = bits & 0x000fffffffffffffL;
La mantisse et l'exposant de l'IEEE double nombre à virgule flottante sont les valeurs telles que
value = sign * (1 + mantissa) * pow(2, exponent)
si la mantisse est de la forme 0.101010101_base 2 (c'est à dire sa plus sigificant peu décalée après le binaire point) et l'exposant est ajusté de biais.
Depuis la 1.6, java.lang.Les mathématiques fournit une méthode pour obtenir la neutralité de l'exposant (appelé getExponent(double))
Cependant, les chiffres que vous proposez sont de l'intégrale et de la fraction d'un nombre, qui peut être obtenu à l'aide de
partie intégrante = Math.floor(x) les fractions = x - Math.floor(x)
si vous vous voulez traiter les nombres négatifs différemment (étage(-3.5) == -4.0), selon lesquelles vous voulez les deux parties.
J'avais suggèrent fortement que vous n'appelez pas de ces mantisse et l'exposant.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.