2016-08-08 29 views
0

Ich möchte das Ergebnis einer Berechnung mit MPFR zu Datei drucken, aber ich weiß nicht wie. MPFR wird verwendet, um Fließkommaoperationen mit hoher Genauigkeit auszuführen. Um eine mpfr_t Nummer zu drucken verwenden Sie die Funktion:Drucken in Datei von MPFR

size_t mpfr_out_str (FILE *stream, int base, size t n, mpfr t op, mp rnd t rnd)

Ich denke, mein Problem ist, dass ich nicht verstehe FILE* Objekte und wie sind sie zu fstream Objekten verwendet.

Wenn ich my_file in der mpfr_out_str Linie stdout dann wird die Nummer auf dem Bildschirm drucken ändern, wie ich gehofft hatte, aber ich weiß nicht, wie es in die Datei zu erhalten.

#include <mpfr.h> 
#include <iostream> 
#include <fstream> 
using namespace std; 
int main() { 
    mpfr_t x; 
    mpfr_init(x); 
    mpfr_set_d(x, 1, MPFR_RNDN); 

    ofstream my_file; 
    my_file.open("output.txt"); 
    mpfr_out_str(my_file, 2, 0, x, MPFR_RNDN); 
    my_file.close(); 
} 

Antwort

1

Es ist möglich, die std :: ostream Methoden mit mpfr Funktionen wie mpfr_as_printf oder mpfr_get_str zu verwenden. Es erfordert jedoch eine zusätzliche String-Zuweisung.

#include <mpfr.h> 
    #include <iostream> 
    #include <fstream> 
    using namespace std; 
    int main() { 
    mpfr_t x; 
    mpfr_init(x); 
    mpfr_set_d(x, 1, MPFR_RNDN); 

    ofstream my_file; 
    my_file.open("output.txt"); 

    char* outString = NULL; 
    mpfr_asprintf(&outString, "%RNb", x); 
    my_file << outString; 
    mpfr_free_str(outString); 
    my_file.close(); 

    mpfr_clear(x); 
    } 
0

Nach nicht viel Arbeit fand ich diese die unteren 4 Zeilen Code zu ersetzen:

FILE* my_file; 
my_file = fopen("output.txt", "w"); 
mpfr_out_str(my_file, 2, 0, x, MPFR_RNDN); 
fclose(my_file);