c++ rekenen?

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
Gebruikersavatar
Heronic
Elite Poster
Elite Poster
Berichten: 2748
Lid geworden op: 20 okt 2003, 16:41
Locatie: Bij mijn vrouw
Uitgedeelde bedankjes: 426 keer
Bedankt: 208 keer

value is een double, de waarde klopt : 189
ckv is een float, de waarde klopt : 0.39
result is een double.

result = value * ckv : 73 ipv 73.71 <- geen decimalen dus!

debug outputje :

Code: Selecteer alles

value :  189  ckv :  0.39  ckg : 0
0 73 0 0 0 0
73
73.71
Ik heb dan maar :
double1 = 189
float1 = 0.39
double2 = double1*float1

Het resultaat hiervan is die 73.71 welke dus perfect is.

Waarom loopt de ene berekening goed en de andere niet?
“Insanity is my only means of relaxation "
My excuse? Being dunk. Whats yours?
butskristof
Elite Poster
Elite Poster
Berichten: 1548
Lid geworden op: 19 dec 2011, 18:42
Locatie: Heist-op-den-Berg
Uitgedeelde bedankjes: 482 keer
Bedankt: 114 keer

Probeer eens value op 189.0 te zetten?

EDIT: zou natuurlijk geen verschil mogen uitmaken aangezien c++ statically typed is, maar toch.

Welke compiler gebruik je?
Ben je zeker dat result nergens per ongeluk naar een int is omgezet?
Laatst gewijzigd door butskristof 15 maa 2015, 19:42, in totaal 1 gewijzigd.
Gebruikersavatar
honda4life
Moderator
Moderator
Berichten: 6163
Lid geworden op: 03 jan 2010, 21:42
Locatie: 127.0.0.1
Uitgedeelde bedankjes: 213 keer
Bedankt: 391 keer
Provider

Delen is /
Maar dat wist je waarschijnlijk al hé, dat is niet zo duidelijk in je voorbeeldje met :
butskristof schreef:Probeer eens value op 189.0 te zetten?
Zou niet uit mogen maken vermits deze al gedeclareerd is als double.
✂ – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
butskristof
Elite Poster
Elite Poster
Berichten: 1548
Lid geworden op: 19 dec 2011, 18:42
Locatie: Heist-op-den-Berg
Uitgedeelde bedankjes: 482 keer
Bedankt: 114 keer

Maar als je een double output moet die normaal toch sowieso 189.0 printen denk ik?

EDIT: nevermind, is blijkbaar toch niet het geval. :eek:
gm123
Elite Poster
Elite Poster
Berichten: 1113
Lid geworden op: 08 maa 2009, 22:27
Uitgedeelde bedankjes: 63 keer
Bedankt: 116 keer

Er 189.0 van maken is waarschijnlijk de oplossing. Sommige compilers doen al eens rare dingen als het op rekenen met doubles aankomt.
Gebruikersavatar
Heronic
Elite Poster
Elite Poster
Berichten: 2748
Lid geworden op: 20 okt 2003, 16:41
Locatie: Bij mijn vrouw
Uitgedeelde bedankjes: 426 keer
Bedankt: 208 keer

Bij het verduidelijken is mijn oog op een dubbele declaratie gevallen.
Had een global double gemaakt en blijkbaar had ik hem in de functie nog eens als int ook, vreemd dat ik daar geen toeters en bellen voor kreeg.
“Insanity is my only means of relaxation "
My excuse? Being dunk. Whats yours?
Plaats reactie

Terug naar “Development”