• 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

Object Storage Arubacloud
0 głosów
235 wizyt
pytanie zadane 9 stycznia 2023 w C i C++ przez piotr_domanski Bywalec (2,080 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,080 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 (5,700 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ź 252 wizyt
pytanie zadane 15 grudnia 2022 w C i C++ przez piotr_domanski Bywalec (2,080 p.)
0 głosów
3 odpowiedzi 986 wizyt
pytanie zadane 26 lipca 2019 w C i C++ przez Jacob7 Użytkownik (540 p.)
0 głosów
1 odpowiedź 1,958 wizyt
pytanie zadane 18 grudnia 2016 w C i C++ przez Jan Dobrakowski Użytkownik (580 p.)

92,555 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,941 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...