J'utilise GMP en C. Est-il possible de définir un mpz_t à la valeur d'un float?De float à mpz_t
4
A
Répondre
5
Oui, il y a une fonction mpz_set_d
que vous pouvez utiliser à cet effet:
void mpz_set_d (mpz_t rop, double op);
Le flotteur sera mis à niveau vers un double par C lui-même et GMP transformer en un type mpz_t
pour vous. Mais vous devez savoir que mpz_t
est un type entier, vous risquez donc de perdre de la précision. Si vous utilisez simplement les flottants pour contenir des nombres entiers supérieurs à votre type long
, cela devrait aller.
Si vous souhaitez gérer réelles valeurs en virgule flottante, vous devez probablement utiliser mpf_t
.
Pour se développer, voici quelques exemples de code et de sortie:
#include <stdio.h>
#include <values.h>
#include <gmp.h>
int main (void) {
float f = MAXFLOAT;
mpz_t num;
mpz_init_set_d (num, f);
printf ("Max float: %f\n", f);
printf ("As mpz_t : ");
mpz_out_str (stdout, 10, num);
putchar ('\n');
return 0;
}
Notez l'utilisation du combiné mpz_init_set_d (num, f)
pour simplifier le code. Cela équivaut aux deux déclarations:
mpz_init (num);
mpz_set_d (num, f);
Le programme ci-dessus sorties:
Max float: 340282346638528859811704183484516925440.000000
As mpz_t : 340282346638528859811704183484516925440
Questions connexes
- 1. Faire le triangle de pascal avec mpz_t
- 2. Chaîne de EditText à float
- 3. float + float = NAN
- 4. magasin à long float MySQL
- 5. C# float comparaison à int
- 6. lecture float à partir de SQLite
- 7. Comment faire pour convertir de float IEEE Python à Microsoft Basic float
- 8. CAST mal coulée float à varchar
- 9. XAML, similaire à float en HTML?
- 10. float entrée à textfield et textarea java
- 11. C# float à la conversion décimale
- 12. son brut byteArray à float Array
- 13. int/float à NSString sans utiliser alloc?
- 14. php lu à partir du fichier float
- 15. Conversion octet à int, float, NSString
- 16. Conversion de float en QByteArray
- 17. de float (3,0) vs (3.0f)
- 18. Conversion de float en char *
- 19. Android Float To Int
- 20. css float/positioniong
- 21. IE8 Effacer problème float
- 22. fantaisie css float + clearing
- 23. float imbriqué li
- 24. PostgreSQL, Format Float
- 25. Python float copy question
- 26. cuda float point précision
- 27. Java: double vs float
- 28. IE6 Float Drop
- 29. Ie7 float bug droit?
- 30. Convertir d'une chaîne de notation scientifique à float en C#
Merci, oui je ne voulais tronquer décimaux. Cependant maintenant je réalise que je devrais employer des doubles au lieu des flotteurs. –
inversement, auriez-vous à savoir comment convertir un mpq_t à la meilleure approximation flottante? je peux écrire quelque chose pour cela mais je me demandais s'il y a déjà quelque chose intégré ... ne pouvait pas le trouver –
il y a en fait une fonction mpq_get_d qui renvoie un double qui se rapproche du mpq_t –