/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
double 54.60 bliver til 54.599998
Fra : jma


Dato : 09-05-06 09:22

Hej NG,
Jeg læser en række tal fra en configurations fil. I de fleste tilfælde
sættes værdien korrekt til præcis det tal som står i configurationsfilen.

Men nogle gange ændres tallet som f.eks. 54.60 bliver til 54.599998 - og
det forstår jeg slet ikke! Er der nogen som kan give mig en god grund? Jeg
vil helst bruge et "rundt tal".

Jeg vil ikke sætte koden ind med mindre nogen ønsker det. Men umiddelbart
burde programmet blot læse værdien fra tekst filen og sætte variablen til
denne.

/Jan

 
 
jma (09-05-2006)
Kommentar
Fra : jma


Dato : 09-05-06 09:28

On Tue, 09 May 2006 10:22:26 +0200, jma wrote:

> Hej NG,
> Jeg læser en række tal fra en configurations fil. I de fleste tilfælde
> sættes værdien korrekt til præcis det tal som står i configurationsfilen.
>
> Men nogle gange ændres tallet som f.eks. 54.60 bliver til 54.599998 - og
> det forstår jeg slet ikke! Er der nogen som kan give mig en god grund? Jeg
> vil helst bruge et "rundt tal".
>
> Jeg vil ikke sætte koden ind med mindre nogen ønsker det. Men umiddelbart
> burde programmet blot læse værdien fra tekst filen og sætte variablen til
> denne.

En løsning kunne være at afrunde til 2 decimailer, men jeg ved ikke
hvordan det gøre i c. Nogen som kan give mig et hint?

jma (09-05-2006)
Kommentar
Fra : jma


Dato : 09-05-06 09:32

On Tue, 09 May 2006 10:27:56 +0200, jma wrote:

> On Tue, 09 May 2006 10:22:26 +0200, jma wrote:
>
>> Hej NG,
>> Jeg læser en række tal fra en configurations fil. I de fleste tilfælde
>> sættes værdien korrekt til præcis det tal som står i configurationsfilen.
>>
>> Men nogle gange ændres tallet som f.eks. 54.60 bliver til 54.599998 - og
>> det forstår jeg slet ikke! Er der nogen som kan give mig en god grund? Jeg
>> vil helst bruge et "rundt tal".
>>
>> Jeg vil ikke sætte koden ind med mindre nogen ønsker det. Men umiddelbart
>> burde programmet blot læse værdien fra tekst filen og sætte variablen til
>> denne.
>
> En løsning kunne være at afrunde til 2 decimailer, men jeg ved ikke
> hvordan det gøre i c. Nogen som kan give mig et hint?

Nå nu fandt jeg fejlen. Det var selvfølgelig en fejl... Spørgsmålet hermed
lukket! Der skete en "forkert" konvertering fra float til double sted...


Bertel Lund Hansen (09-05-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 09-05-06 10:44

jma skrev:

> En løsning kunne være at afrunde til 2 decimailer, men jeg ved ikke
> hvordan det gøre i c. Nogen som kan give mig et hint?

double tal;

tal=54,59998;
printf("%6.2",tal);

6 afsætter 6 pladser i alt til tallet, mens 2 sikrer at der
afrundes til 2 decimaler.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

jma (09-05-2006)
Kommentar
Fra : jma


Dato : 09-05-06 14:14

On Tue, 09 May 2006 11:44:11 +0200, Bertel Lund Hansen wrote:

> jma skrev:
>
>> En løsning kunne være at afrunde til 2 decimailer, men jeg ved ikke
>> hvordan det gøre i c. Nogen som kan give mig et hint?
>
> double tal;
>
> tal=54,59998;
> printf("%6.2",tal);
>
> 6 afsætter 6 pladser i alt til tallet, mens 2 sikrer at der
> afrundes til 2 decimaler.

Tak for det



Bertel Lund Hansen (09-05-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 09-05-06 15:02

jma skrev:

>> double tal;

>> tal=54,59998;
>> printf("%6.2",tal);

>> 6 afsætter 6 pladser i alt til tallet, mens 2 sikrer at der
>> afrundes til 2 decimaler.

> Tak for det

Der var kun to fejl på 3 linjer:

1. tal=54.59998;

2. Der mangler et f som er koden for double:
   printf("%6.2f",tal);

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Niels Dybdahl (09-05-2006)
Kommentar
Fra : Niels Dybdahl


Dato : 09-05-06 09:58

"jma" <jpeace73@hotmailFJERNTHIS.com> wrote in message
news:pan.2006.05.09.08.22.25.48771@hotmailFJERNTHIS.com...
> Hej NG,
> Jeg læser en række tal fra en configurations fil. I de fleste tilfælde
> sættes værdien korrekt til præcis det tal som står i configurationsfilen.
>
> Men nogle gange ændres tallet som f.eks. 54.60 bliver til 54.599998 - og
> det forstår jeg slet ikke! Er der nogen som kan give mig en god grund? Jeg
> vil helst bruge et "rundt tal".

Man kan ikke angive tallet 54.60 præcist med den talrepræsentation som
normalt bruges i en PC. Den er baseret på 2-talssystemet og decimaltal skal
angives som en sum af nogle af tallene 0.5 0.25 0.125 0.0625 etc
Så tallet 54.6 er ikke blevet "ændret" til 54.599998. Det har simpelthen
aldrig været 54.6

Niels Dybdahl



Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407950
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste