Mam jeden konkretny problem podczas przekształcania wartości double
na ciąg znaków przy użyciu sprintf()
w systemie UNIX.Formatowanie sprintf o podwójnej wartości
Na przykład mam dwie wartości:
double a = 0.009984354523452;
double b = 0.01;
Podczas konwersji używam:
sprintf(somestringvar, "Double value : %.15f \n", a);
sprintf(diffstringvar, "Double value : %.15f \n", b);
przekonwertować na sznurku.
Mój problem dotyczy "a", wartość jest drukowana prawidłowo, ale dla wartości "b", 0 są dołączane na końcu. Podaj mi jakiś popularny sposób reprezentowania "a" i "b" jako dokładnych wartości.
Używałbym std :: ostringstream dla tego rodzaju rzeczy. – Robinson
I generalnie nie używaj 'sprintf()', ponieważ może to prowadzić do przepełnienia bufora. Zamiast tego użyj "snprintf()" lub jednej z "bezpiecznych" wersji "Microsoft" w systemie Windows. p.s. Witamy w Stack Overflow! –
Dziękuję za wcześniejsze odpowiedzi. ostringstream nie przyjmuje pełnej precyzji. wartość jest drukowana tylko jako 0,009976. Mogę użyć snprintf(), ale problemem jest prawidłowe drukowanie wartości. – sandy