• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

konwertowanie long double na string problem

0 głosów
453 wizyt
pytanie zadane 9 stycznia 2023 w C i C++ przez piotr_domanski Bywalec (2,580 p.)

Witam, mam taki problem

Chce przekonwertować zmienną typu long double na string. Mój kod:

#include <iostream>
#include <string>
#include <stdio.h>
#include <cstdlib>
#include <stdlib.h>
#include <conio.h>
#include <cstring>
#include <time.h>
#include <string.h>
#include <math.h>
 
 
using namespace std;
 
 
int main ()
{
    double wylosowane_dane1;
    double wylosowane_dane2;
    double wylosowane_dane3;
    double wylosowane_dane4;
    double wylosowane_dane5;
 
    double wynik1a_test;
    double wynik1b_test;
 
    double wynik2a_test;
    double wynik2b_test;
 
    double wynik3a_test;
    double wynik3b_test;
 
    double wynik4a_test;
    double wynik4b_test;
    /////////////////
    string wynik1a_teststring;
    string wynik1b_teststring;
 
    string wynik2a_teststring;
    string wynik2b_teststring;
 
    string wynik3a_teststring;
    string wynik3b_teststring;
 
    string wynik4a_teststring;
    string wynik4b_teststring;
 
    srand(time(NULL));
    wylosowane_dane1 = rand() % 34 + 1;
    wylosowane_dane2 = rand() % 34 + 1;
    wylosowane_dane3 = rand() % 34 + 1;
    wylosowane_dane4 = rand() % 34 + 1;
    wylosowane_dane5 = rand() % 34 + 1;
 
    wynik1a_teststring = to_string(wylosowane_dane1) + "sqrt(2)";
    wynik1b_test = pow(wylosowane_dane1,2);
    wynik1b_teststring = to_string(wynik1b_test);
 
                        ////////////////////////////
                        //////////////////zadanie 2
    wynik2a_test = wylosowane_dane2 * wylosowane_dane3;
    wynik2a_teststring = to_string(wynik2a_test);
 
    wynik2b_test = sqrt(pow(wylosowane_dane2,2) + pow(wylosowane_dane3,2));
    wynik2b_teststring = to_string(wynik2b_test);
                        //////////////////////////////zadanie 3
    wynik3a_test = pow(wylosowane_dane4,2) / 4;
    wynik3a_teststring = to_string(wynik3a_test) + "sqrt(3)";
 
    wynik3b_test = wylosowane_dane4 / 2;
    wynik3b_teststring = to_string(wynik3b_test) + "sqrt(3)";
                        ////////////////////////////////zadanie 4
 
    wynik4a_test = pow(wylosowane_dane5,2)/4;
    wynik4a_teststring = to_string(wynik4a_test) + "sqrt(3)";
 
    wynik4b_test = 2 * wylosowane_dane5;
    wynik4b_teststring = to_string(wynik4b_test) + "sqrt(3)";
    cout << endl;
    cout << wynik1a_teststring << endl;
    cout << wynik1b_teststring << endl;
    cout << wynik2a_teststring << endl;
    cout << wynik2b_teststring << endl;
    cout << wynik3a_teststring << endl;
    cout << wynik3b_teststring << endl;
    cout << wynik4a_teststring << endl;
    cout << wynik4b_teststring << endl;

 return 0;
 
}

Wszystrko jest dobrze gdy zrobię coś takiego:

long double zmienna1 = 3.43423423;

Lub:

long double zmienna1 = 4;

Wtedy wyjście jest 4; W moim przypadku jest tak, że ja wykorzystuje obliczenia na zmiennych i on daje takie wyniki:

Skąd te zera, wiem że można zrobić tak, że rzutujemy do int, ale wtedy nie będę miał np: 3.23.

Co jest źle, wynik jest dobry ale te zera już są zbędne. Co mam zrobić.

Bardzo proszę o pomoc.

Z góry dzięki :). 

komentarz 10 stycznia 2023 przez piotr_domanski Bywalec (2,580 p.)
Dzięki pokombinuje

1 odpowiedź

+1 głos
odpowiedź 9 stycznia 2023 przez Nudzi mi się Gaduła (4,460 p.)

metoda to_strong przyjmuje precyzję do 6 miejsc po przecinku dlatego pojawiają się te zera. Trzeba je po prostu przyciąć.

string doubleToString(double numberToConvert, int precision = 2) {
    string text = to_string(numberToConvert);
    text = text.substr(0, text.length() - 6 + precision);
    if (text[text.length() - 1] == '.') {
        text = text.substr(0, text.length() - 1);
    }
    return text;
}

 

komentarz 9 stycznia 2023 przez TOWaD Mądrala (6,770 p.)

Może  takie to_string lepsze

std::string to_string(long double ld){
    std::stringstream ss;
    ss<<ld;
    std::string s;
    ss>>s;
 return s;
}

i też działa online

Podobne pytania

0 głosów
1 odpowiedź 588 wizyt
pytanie zadane 15 grudnia 2022 w C i C++ przez piotr_domanski Bywalec (2,580 p.)
0 głosów
3 odpowiedzi 1,622 wizyt
pytanie zadane 26 lipca 2019 w C i C++ przez Jacob7 Użytkownik (540 p.)
0 głosów
1 odpowiedź 2,410 wizyt
pytanie zadane 18 grudnia 2016 w C i C++ przez Jan Dobrakowski Użytkownik (580 p.)

93,691 zapytań

142,610 odpowiedzi

323,215 komentarzy

63,215 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...