Comment convertir le tableau de chars à la gamme des doubles en Java?
J'ai un tableau de float et je voudrais le convertir en un tableau de doubles en Java. Je suis conscient de la manière évidente de parcourir le tableau et d'en créer un nouveau. Je m'attendais à Java pour digérer un float[] douceur du lieu où il souhaite travailler avec double[]... mais il ne peut pas travailler avec ce.
Qu'est-ce que l'élégance, de manière efficace de faire cette conversion?
- Il n'y a aucun moyen de "élégamment" faire cela parce que les float et double sont totalement différents types de données par la taille et la séquence de bits. Donc, le moyen le plus évident est le seul.
Vous devez vous connecter pour publier un commentaire.
Fondamentalement quelque chose a faire de la conversion de chaque valeur. Il n'y a pas une conversion implicite entre les deux types de tableau parce que le code utilisé pour les gérer après JITting seraient - ils ont un autre élément de taille, et le flotteur aurait besoin d'une conversion alors que le double ne serait pas. Comparez cela à la matrice de covariance pour les types référence, où aucune conversion n'est nécessaire lors de la lecture des données (le modèle de bits est le même pour une Chaîne de référence comme un Objet de référence, par exemple) et la taille de l'élément est le même pour tous les types de référence.
En bref, quelque chose devrez effectuer des conversions dans une boucle. Je ne sais pas du tout intégré dans les méthodes pour ce faire. Je suis sûr qu'ils existent dans les bibliothèques tierces quelque part, mais à moins que vous arrive d'être en utilisant l'un de ces bibliothèques déjà, je venais d'écrire votre propre méthode. Pour des raisons de commodité, voici un exemple d'implémentation:
convertToDoubles
outoDoubles
et de fournir des surcharges pour les autres primitives (et en boîte) types.Dans Java 8, vous pouvez, si vous le voulez vraiment, n':
Mais c'est mieux (plus propre, plus rapide, mieux sémantique) à utiliser Jon Skeet fonction.
Avez-vous réellement besoin de copier votre float array un tableau double? Si vous rencontrez des problèmes avec le compilateur et les types lors de l'utilisation de la flotte, vous pouvez utiliser cette...
Quel avantage avez-vous obtenir en prenant une copie? Si vous avez besoin d'une plus grande précision dans les résultats des calculs basés sur les flotteurs puis de rendre les résultats
double
. Je vois beaucoup d'inconvénients à avoir une copie de la matrice, et l'accomplissement de la fonction de copie, surtout si elle est grande. Assurez-vous que vous avez vraiment besoin de le faire.HTH
double[]
alors que vous avez vos données dans unfloat[]
.Double.valueOf
[éventuellement] instancie un objet. Utiliser une distribution simple.float f = 0; double d = f;
fonctionne très bien