2017-10-05 3 views
-1

J'ai une question sur les grands nombres dans groovy, j'écris au script qui appellent à DB et mettre la valeur de budget dans la variable appelée toub_start_budget, la valeur stockée est 2570000000. puisque je veux faire l'opération arithmétique J'ai créé une autre variable appelée toub_budget et y ai mis la valeur de la première variable comme float. Le problème est que la nouvelle variable n'a pas enregistré les données comme flottant mais comme un nombre comme 2.56999987E9. et l'arithmétique que je fais sont faux, par exemple diviser par 1000000, apportera 2569.9 et pas les résultats précis 2570 (la précision est importante). quelqu'un peut-il s'il vous plaît conseiller sur la façon de gérer les grands nombres, avec l'arithmétique? concernantBig Numbers traitant dans groovy + Jmeter + java

enter image description here

enter image description here

+0

Utiliser 'BigDecimal' au lieu de' float' –

+1

S'il vous plaît ne publiez pas des images de code et de sortie, mais postez le texte lui-même en retrait de quatre espaces. – Vampire

+0

Vous voulez passer du temps sérieux à apprendre sur les principes fondamentaux des nombres à virgule flottante ... par exemple https://stackoverflow.com/questions/588004/is-floating-point-math-broken ... et ensuite vous lire à propos de flottant numéros de point sur la JVM ... – GhostCat

Répondre

2

Ne pas utiliser float, il est par définition inexacte. Si vous avez besoin de calculs précis et de grands nombres arbitraires, utilisez BigDecimal. Si vous utilisez Groovy, puis juste faire le calcul, Groovy utilisera automatiquement BigDecimal le cas échéant comme vous pouvez le voir en exécutant (2570000000/1000).getClass() et (2570000000/1001).getClass()