Je suis en train de créer un programme qui génère des vecteurs de test à utiliser dans un banc de test VHDL. Le banc d'essai teste essentiellement un composant matériel agissant comme un additionneur à virgule flottante simple précision, de sorte que les vecteurs seront conformes à la norme IEEE 754.Est-il dangereux de convertir float en BigDecimal puis en arrière?
Quoi qu'il en soit, mon plan actuel pour la génération est de convertir les valeurs float à BigDecimal
, faire l'arithmétique nécessaire, puis convertir en flottant. Est-ce dangereux? La précision sera-t-elle perdue, entraînant un résultat potentiellement inexact dans le vecteur de test? Je veux convertir en BigDecimal
, donc je peux éviter les problèmes d'arrondi.
Est-ce que cela tronquerait le résultat?
BigDecimal repA = new BigDecimal(Float.toString(A));
BigDecimal repB = new BigDecimal(Float.toString(B));
BigDecimal repResult = repA.add(repB);
float result = repResult.floatValue();
Où A et B sont un certain flottant.
Vous allez certainement perdre de la précision car un flotteur ne peut pas représenter tous les nombres fractionnaires possibles. – anubhava
Y at-il un moyen que je pourrais accomplir cela en ne perdant aucune précision? – Franklin
À quel point croyez-vous que vous en avez besoin? –