Existe-t-il un moyen de convertir un Longtype de données en Doubleou double?
Par exemple, je dois convertir 15552451Len un doubletype de données.
Réponses:
Vous pouvez simplement faire:
double d = (double)15552451L;
Ou vous pouvez obtenir le double de l'objet Long comme:
Long l = new Long(15552451L);
double d = l.doubleValue();
new) où elle ne peut pas être éludée.
double d = 15552451L;
Un casting simple?
double d = (double)15552451L;
15552451d
Comme déjà mentionné, vous pouvez simplement lancer long pour doubler. Mais soyez prudent avec une conversion longue à double car longue à double est une conversion rétrécie en java.
Par exemple, le programme suivant imprimera 1 et non 0
long number = 499999999000000001L;
double converted = (double) number;
System.out.println( number - (long) converted);
Cherchez-vous la conversion binaire?
double result = Double.longBitsToDouble(15552451L);
Cela vous donnera doublele même motif de bits que le longlittéral.
Les littéraux binaires ou hexadécimaux seront utiles ici. Voici quelques exemples.
double nan = Double.longBitsToDouble(0xfff0000000000001L);
double positiveInfinity = Double.longBitsToDouble(0x7ff0000000000000L);
double positiveInfinity = Double.longBitsToDouble(0xfff0000000000000L);
(Voir Double.longBitsToDouble (long) )
Vous pouvez également récupérer longavec
long bits = Double.doubleToRawLongBits(Double.NaN);
longà double(je pense que la coulée est l' une des premières choses que vous apprenez lorsque vous utilisez Java) ni n'a accepter aucune réponse. Peut-être qu'il veut obtenir un doubleavec le même motif de bits que la longvaleur. Eh bien, je ne sais pas. Alors j'ai juste donné la réponse.
Long i = 1000000;
String s = i + "";
Double d = Double.parseDouble(s);
Float f = Float.parseFloat(s);
De cette façon, nous pouvons convertir le type Long en Double ou Float ou Int sans aucun problème car il est facile de convertir une valeur de chaîne en Double ou Float ou Int.
Qu'entendez-vous par un type de date longue ?
Vous pouvez lancer un long en double:
double d = (double) 15552451L;
Long.valueOf(15552451L).doubleValue()si vous voulez passer parLong. Notez que c'est la même chose, en interne, que la distribution à partir de adouble, sauf que vous faites de l'auto / unboxing.