• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
335 wizyt
pytanie zadane 9 stycznia 2023 w C i C++ przez piotr_domanski Bywalec (2,260 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,260 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,250 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ź 351 wizyt
pytanie zadane 15 grudnia 2022 w C i C++ przez piotr_domanski Bywalec (2,260 p.)
0 głosów
3 odpowiedzi 1,241 wizyt
pytanie zadane 26 lipca 2019 w C i C++ przez Jacob7 Użytkownik (540 p.)
0 głosów
1 odpowiedź 2,191 wizyt
pytanie zadane 18 grudnia 2016 w C i C++ przez Jan Dobrakowski Użytkownik (580 p.)

93,173 zapytań

142,184 odpowiedzi

321,967 komentarzy

62,499 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1149p. - dia-Chann
  2. 1131p. - Łukasz Piwowar
  3. 1124p. - CC PL
  4. 1118p. - Łukasz Eckert
  5. 1097p. - Michal Drewniak
  6. 1081p. - Marcin Putra
  7. 1076p. - rucin93
  8. 1054p. - Adrian Wieprzkowicz
  9. 1047p. - Piotr Aleksandrowicz
  10. 1000p. - ssynowiec
  11. 967p. - rafalszastok
  12. 931p. - Michał Telesz
  13. 886p. - Dominik Łempicki (kapitan)
  14. 842p. - Dawid128
  15. 819p. - Mariusz Fornal
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...