Как я получаю целые и дробные части от дважды в JSP/Java? Если значение 3.25 затем, я хочу добраться fractional =.25
, whole = 3
Как мы можем сделать это в Java?
Google помог бы Вам, если бы Вы использовали правильные термины для поиска, "получают дробную и целую часть из двойного 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
[Редактирование: вопрос первоначально спросил, как получить мантиссу и экспоненту.]
, Где n является числом для получения реальной мантиссы/экспоненты:
exponent = int(log(n))
mantissa = n / 10^exponent
Или, для получения ответа Вы искали:
exponent = int(n)
mantissa = n - exponent
Они не Java точно, но должны быть легки преобразовать.
Мантисса и экспонента IEEE, двойное число с плавающей точкой является значениями, таким образом, что
value = sign * (1 + mantissa) * pow(2, exponent)
, если мантисса имеет форму 0.101010101_base 2 (т.е. ее большая часть sigificant укусил, смещается, чтобы быть после двоичной точки) и экспонента корректируются для предвзятости.
С тех пор 1.6, java.lang. Математика также обеспечивает прямой метод получить несмещенную экспоненту (названный getExponent (дважды))
Однако числа, которые Вы просите, неотъемлемые и дробные части числа, которое может быть получено с помощью
integral = Math.floor(x)
fractional = x - Math.floor(x)
, хотя Вы можете Вы хотеть рассматривать отрицательные числа по-другому (floor(-3.5) == -4.0)
, завися, почему Вы хотите эти две части.
я настоятельно рекомендовал бы, чтобы Вы не называли их мантиссой и экспонентой.
Исходный вопрос задают для экспоненты и мантиссы, а не дробной и целой части.
Для получения экспоненты и мантиссы от двойного можно преобразовать его в представление IEEE 754 и извлечь биты как это:
long bits = Double.doubleToLongBits(3.25);
boolean isNegative = (bits & 0x8000000000000000L) != 0;
long exponent = (bits & 0x7ff0000000000000L) >> 52;
long mantissa = bits & 0x000fffffffffffffL;
double value = 3.25;
double fractionalPart = value % 1;
double integralPart = value - fractionalPart;
public class MyMain2 {
public static void main(String[] args) {
double myDub;
myDub=1234.5678;
long myLong;
myLong=(int)myDub;
myDub=(myDub%1)*10000;
int myInt=(int)myDub;
System.out.println(myLong + "\n" + myInt);
}
}