kommatal

Tags:    c++

Hej

Jeg har et program, hvor jeg skal dividere et tal med et andet. Når jeg dividere de 2 tal får jeg det som et tal. Jeg vil gerne have have det med 5 dicimaler hvordan gør jeg det ?

Med venlig hilsen

Søren



9 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Du kunne prøve noget lignende dette:

<pre>
#include <iostream>

float SaetAntalDecimaler(float p_Tal,unsigned int p_Decimaler)
{
unsigned int TempTal = 1;

for( unsigned int Indeks = 0;Indeks < p_Decimaler;++Indeks)
TempTal *= 10;

p_Tal *= TempTal;

//Rund af
unsigned int TempTal2 = p_Tal+0.5F;

return (static_cast<float>(TempTal2)/TempTal);

}

int main()
{
const float TalMedMangeDecimaler = 5.142455325355532;
//Variablen har over 5 decimaler.
float KommaTalMed5Decimaler = SaetAntalDecimaler(TalMedMangeDecimaler,5);
//Variablen har nu over 5 decimaler
std::cout << KommaTalMed5Decimaler << std::endl;

std::cin.get();

return 0;
}
</pre>


[Redigeret d. 22/07-05 22:53:03 af Ebnuv]



Hvis man dividerer to heltal (integers) får man et heltal.

For at få det i kommatal (float/double) kan man:

int i = 5;
int j = 2;
double x = 1.0*i/5;

Man vil normalt regne med lige så mange cifre som compileren/processoren synes, og så vælge antal cifre når man udskriver.



F.ex:
Fold kodeboks ind/udKode 




F.ex:
Fold kodeboks ind/udKode 


Hej

Jeg laver det som et windows program så hvordan gør jeg så ?



Du kan bruge en std::stringstream i stedet for cout.

En stringstream virker på samme måde som cout, men gemme i en streng.

Du kan få fat i denne streng i form af en std::string ved at bruge stream'ens str() function.



Du kan bruge en std::stringstream i stedet for cout.

En stringstream virker på samme måde som cout, men gemme i en streng.

Du kan få fat i denne streng i form af en std::string ved at bruge stream'ens str() function.


Kan jeg få et ekempel ?





Et meget hurtigt eksempel:

Fold kodeboks ind/udKode 




Et meget hurtigt eksempel:

Fold kodeboks ind/udKode 


Jeg er ked af at sige det men jeg kan ikke få det til at virke. Findes der ikke en lettere måde at få et kommatal med 5 decimaler på ?

Mvh.

Søren



Hej

jeg fandt selv ud af det på en anden måde ved


Fold kodeboks ind/udKode 


Men tak for at i gad at svare allesammen, så i får lige nogle UP



t