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

Dużo zer po przecinku c++

+1 głos
709 wizyt
pytanie zadane 2 sierpnia 2020 w C i C++ przez NieMaJuzNazw Użytkownik (890 p.)

Witajcie, to znowu ja. Tym razem problem wygląda następująco: Po wyświetleniu liczby obliczonej z tego kodu

int score = 0;
int coinRand = 4540;
float czas = 181620;
int main()
{
    
    std::string Pkt = std::to_string(score);
    
    std::string Licznik = std::to_string(czas/3027.f);
   

Powstaje takie coś:

korzystam z blibliteki sfml. SetPrecision tutaj według mnie nie zadziała, no chyba że ja nie umiem go dobrze użyć. Co mogę zrobić w takiej sytuacji?

komentarz 2 sierpnia 2020 przez _Pita_ Stary wyjadacz (11,410 p.)
Dlaczego korzystasz ze stinga?

Nie możesz po prostu użyć float i zaokrąglić?
komentarz 3 sierpnia 2020 przez NieMaJuzNazw Użytkownik (890 p.)
1. Już to próbowałem i wychodziło to samo

2. Jak mówiłem korzystam z Sfml i text.SetString() aby ustawiać co ma się wyświetlać i musi tam być string
komentarz 3 sierpnia 2020 przez _Pita_ Stary wyjadacz (11,410 p.)
A jak zmienisz na int?
komentarz 3 sierpnia 2020 przez VBService Ekspert (256,600 p.)
edycja 3 sierpnia 2020 przez VBService

@NieMaJuzNazw,

#include <iostream>
#include <sstream>
#include <iomanip>

std::string f2Str(float f)
{
    std::stringstream buffer;
	buffer << std::fixed << std::setprecision(2) << f;
	return buffer.str();
}

int main()
{

  float czas = 181620;
  std::string Licznik = f2Str(czas/3027.f);

  std::cout << Licznik;
  return 0;
}

[ std::stringstream ]

komentarz 3 sierpnia 2020 przez NieMaJuzNazw Użytkownik (890 p.)

@_Pita_,  a po co mam zmieniać na int?

komentarz 3 sierpnia 2020 przez _Pita_ Stary wyjadacz (11,410 p.)
Int nie może zawierać przecinka, więc zer po nim także nie.
komentarz 3 sierpnia 2020 przez NieMaJuzNazw Użytkownik (890 p.)
A, myślałem że ci chodzi ze mam potem zmieniać z jakiegoś powodu z string na int, dając int dalej są te 0
komentarz 3 sierpnia 2020 przez NieMaJuzNazw Użytkownik (890 p.)
@VBservice, nie działa
komentarz 3 sierpnia 2020 przez VBService Ekspert (256,600 p.)

@NieMaJuzNazw, W jakim sensie nie działa? Jeśli pojawiają się zera to usuń: std::fixed i(lub) zmień ustawienia std::setprecision().

komentarz 3 sierpnia 2020 przez NieMaJuzNazw Użytkownik (890 p.)
usuwam to std fixed, zmieniam setprecision i nadal sie pojawiają 0
komentarz 3 sierpnia 2020 przez VBService Ekspert (256,600 p.)
std::string f2Str(float f)
{
  std::stringstream buffer;
  buffer << std::setprecision(2) << f;
  return buffer.str();
}

 

komentarz 3 sierpnia 2020 przez NieMaJuzNazw Użytkownik (890 p.)
wszystko jest nadal wyświetlane tak jak na obrazku który dołączyłem
komentarz 3 sierpnia 2020 przez VBService Ekspert (256,600 p.)

std::string Licznik = f2Str(czas/3028.f);

std::string Licznik = f2Str(czas/3028);

 

komentarz 3 sierpnia 2020 przez NieMaJuzNazw Użytkownik (890 p.)
dobra, dziala. zapomnialem ze w 2 miejscach mam setstring a ja dawalem tylko do 1..

1 odpowiedź

0 głosów
odpowiedź 3 sierpnia 2020 przez pvalue Dyskutant (8,720 p.)

może to podziała -> https://mattmccutchen.net/bigint/

Podobne pytania

0 głosów
2 odpowiedzi 1,218 wizyt
pytanie zadane 25 listopada 2018 w C i C++ przez Nutella159 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 972 wizyt
pytanie zadane 10 września 2016 w C# przez DeBos123 Nałogowiec (44,950 p.)
+1 głos
1 odpowiedź 275 wizyt

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...