Utilisation d'un numéro de point flottant pour une clé de carte

Après avoir créé un nouvel objet:
Map<float,integer> m = new HashMap//<float,integer>;


J'ai un tableau avec
"float"

chiffres qui sont uniques . Je veux ajouter ces points-virgules flottants comme
m's key

! Puis-je le faire comme ça:
m.put/new Float/a[i]/,"cat"/;

?

remercier
</float,integer></float,integer>
Invité:

Christine

Confirmation de:

Je recommanderais de ne pas utiliser de chiffres de points flottants en tant que clé de carte hash, si possible. Vos clés doivent coïncider avec précision lorsque vous recherchez des valeurs et obtenez facilement des numéros de points flottants qui ne sont pas tout à fait corrects.

Agathe

Confirmation de:

Prendre toutes les réponses ensemble.

La carte mentionnée ne peut pas prendre des cordes, vous ne pouvez donc pas dire m.put/f, "cat"/

Vous pouvez, mais ne pas avoir à envelopper float par Float: auto-boxing le fait pour vous automatiquement pour que vous puissiez juste dire m. put/a[i],"cat"/

Il n'est pas recommandé d'utiliser des points-virgules flottants. /Float et Double/ comme une carte clé. Cela peut causer des problèmes lorsque vous essayez d'extraire la valeur de la carte à l'aide de la méthode. get /key/

Notez également que le type par défaut des constantes flottantes - doubles, et non float. Par conséquent, soyez prudent avec des flotteurs, utilisez-les seulement s'ils en ont vraiment besoin. Dans tous les cas, utilisez un modificateur float à côté des constantes de type 3.14f.

Emilie

Confirmation de:

Vous ne pouvez pas faire
m.put/new Float/a[i]/,"cat"/;

, Parce que votre valeur devrait être
Integer

. Pour ce faire, vous devez le déclarer comme
Map<float,string> m = new HashMap//<float,string>;

.
</float,string></float,string>

Babette

Confirmation de:

Troncature à une précision donnée pour générer des clés à clé prévisibles. Exemple B. JavaScript


const precision = Math.pow/10, 4/; // where 4 is number of decimal places to retain
const a = 12.5678912331; b = 13.75324122; c = 21.32112221
const key = '' + Math.floor/a * precision/ + '_' + Math.floor/b * precision/ + '_' + Math.floor/c * precision/;
const aMap = new Map//;
aMap.set/key, 'some value'/;


Fait inutile: il est pris à partir du code utilisé pour indexer les sommets des objets 3d. Définir une précision plus faible, il vous permet de combiner les sommets à proximité

Pour répondre aux questions, connectez-vous ou registre