[Delphi] uitkomst van rekensom geeft verkeerde waarde?

Pagina: 1
Acties:

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 20-05 23:28
Ik doe deze berekening:
code:
1
2
3
4
5
6
var int1 : integer;
i : real;
begin

i := 35; (een hoekberekening hangt hieraan)
int1 := round(25 * radtodeg(sin(i)));

als ik een breakpoint op die regel zet, krijg ik een raar getal.
met rekenmachine van windows gaat het goed.

dan zou ik hieruit 14,339... krijgen
in delphi dus niet. iemand een verklaring?

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 21-05 14:02

Knutselsmurf

LED's make things better

Als je de sin van 35 graden wilt weten, moet je natuurlijk wel sin(degtorad(i)) doen.

[ Voor 5% gewijzigd door Knutselsmurf op 08-10-2004 21:08 ]

- This line is intentionally left blank -


  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 20-05 23:28
nu heb ik:

code:
1
int1 := round(25 * radtodeg(sin(degtorad(i))));

hier komt uit 827 (afgerond dus)

nog steeds niet wat ik verwacht dus eigenlijk.
terwijl ik dacht dat met degtorad het wel verholpen zou zjin...
het klinkt immers logisch, rad als input, rad als output van sin.

  • klinz
  • Registratie: Maart 2002
  • Laatst online: 21-05 09:01

klinz

weet van NIETS

Je moet die radtodeg() weglaten.
code:
1
int1 := round(25 * sin(degtorad(i)));

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 20-05 14:02

Tomatoman

Fulltime prutser

Geef eerst de variabelen eens betekenisvolle namen, het is me nu niet duidelijk wat je aan het doen bent.

Verder voer je een sinusfunctie altijd uit op een getal uitgedrukt in radialen, maar dat had je ook in de helpfiles kunnen lezen. Het geheel krijgt nu wat weg van trial and error op zoek naar de goede formule. Dat is natuurlijk niet de juiste benadering. De eerste vraag is: wat wil je precies uitrekenen en in welke eenheden druk je dat uit? De vraag die daarop volgt is: hoe bereken je dat dan in gemakkelijk hanteerbare eenheden? Tenslotte: als dat niet de eenheden zijn die je wenst, hoe reken je die makkelijk hanteerbare eenheden dan om naar de eenheden die je eigenlijk wilt gebruiken? Jouw 'probleem' is niet meer dan middelbare-schoolwerk :)

Een goede grap mag vrienden kosten.


  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 20-05 23:28
Daarom heb ik hier ook middelbare schoolboeken voor me haha.

Ik wil een rectangle roteren. daarbij is een naam verzinnen voor een aantal variablen best moeilijk zodat ze begrijpelijk zijn, want zelfs op papier kan ik er geen fatsoenlijke benamingen aan geven. Ik voer alles wat ik in het programma wil hebben ook uit op papier, en ik bereken het eerst op papier en met rekenmachine. deze berekeningen zet ik vervolgens in het programma op een manier dat ik met mijn muis een rectangle kan roteren.

echter op dat je zei dat dat van die radialen in de help stond. dat is niet zo. er stond namelijk niet dat een sin functie, radialen als input nodig had. wel dat hij radialen als output gaf dat wel.

Verder vindi k het vreemd dat ik radtodeg WEG moet laten want ik moet mijn rekenmachine toch ook op degrees zetten wil ik een juiste uitkomt hebben uiteindelijk?

[ Voor 5% gewijzigd door Cheater op 08-10-2004 22:39 ]


  • Twilight Burn
  • Registratie: Juni 2000
  • Laatst online: 29-04 11:55
De sin() functie in delphi werkt uitsluitend op radialen, daarom staat de degToRad() IN de sinus functie. De uitkomst van een sinusfunctie is geen hoek meer, en is dus niet uitgedrukt in radialen of graden, het toepassen van die radtodeg() "verkloot" je antwoord alleen, en heeft geen enkele wiskundige betekenis.

  • ILUsion
  • Registratie: Augustus 2003
  • Laatst online: 08-11-2025
Een sinus is een getal, geen radiaal ... (dat wordt hier toch 5 keer per lestijd in de week (zijn er hier 7) naar mijn kop gegooid). Deg/Rad maakt enkel uit voor sinus omdat een radiaal niet gelijk is aan één graad ( 2pi rad = 360°, pi rad = 180°, 1 rad = 180°/pi ). De uitkomst van de sinusfunctie is een getal, namelijk de y-waarde van het snijpunt met een goniometrische cirkel...

code:
1
round(25 * sin(degtorad(i)));
is dus zeker juist.
Pagina: 1