Toon posts:

[JSP] (Simpel) percentage uitrekenen lukt niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Lo,

Mijn vraag is simpel:
code:
1
<%= (int) (totaal[i]/som)*100 %>


geeft 0. Zonder (int) geeft het 0.0.

totaal[i] heeft evenals som een waarde. Deze getallen worden daar vlak voor namelijk op het scherm gezet. Waarom geeft dit dan toch 0? Wat voor simpels ziet mijn overwerkte brein over het hoofd? :+

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Als totaal[i] en som beide int's zijn, dan wordt de deling van beide ook naar een int afgerond (dus 0), dan vermenigvuldigen met 100, maakt het nog steeds 0.
Je moet dus, totaal (en som) eerst naar een double casten, of beide als double definieren.

"Beauty is the ultimate defence against complexity." David Gelernter


Verwijderd

Topicstarter
8)7

Dat had ik zelf moeten bedenken..ok, het is al laat en tentamenweek, vergeef mij :+.

Thanx!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Verder: waarom cast je het resultaat naar een integer? Heb je in JSP geen round() functie? :?

(int) 8.9 == 8
round(8.9, 0) == 9

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

NMe84 schreef op 23 juni 2004 @ 00:52:
Verder: waarom cast je het resultaat naar een integer? Heb je in JSP geen round() functie? :?

(int) 8.9 == 8
round(8.9, 0) == 9
Zeker, gewoon Math.round(getal) :)

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
ok detail maar idd wat netter ;). Dank u.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:19
Macros schreef op 23 juni 2004 @ 00:46:
Als totaal[i] en som beide int's zijn, dan wordt de deling van beide ook naar een int afgerond (dus 0), dan vermenigvuldigen met 100, maakt het nog steeds 0.
Je moet dus, totaal (en som) eerst naar een double casten, of beide als double definieren.
Je observatie klopt, maar met je conclusie ben ik het niet eens. Omwille van (de voorspelbaarheid van) de nauwkeurigheid en de performance is het verstandiger om met integers te blijven werken. Je moet dan de berekening dan herschrijven naar 100*totaal/som. Overigens wordt dan wel altijd omlaag afgerond (en dus niet 'wiskundig'). Met wiskundige afronding kun je trouwens ook niet garanderen dat het totaal van de percentages op 100 uitkomt.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 23 juni 2004 @ 01:20:
ok detail maar idd wat netter ;). Dank u.
Is geen detail:
.oisyn schreef op 22 juni 2004 @ 16:39:
Overigens is een cast naar int niet hetzelfde als floor. Een cast geeft namelijk alleen het integer gedeelte terug, dus (int)-0.5 geeft 0. Echter, floor (-0.5) = -1
De resultaten varieren dus wel degelijk of je mathematisch afrond of middels casts. En dan moet je dus uit floor, round en ceil nog wel even de goede kiezen voor je toepassing :)

Professionele website nodig?

Pagina: 1