[ASP/VB] rekenen met komma's

Pagina: 1
Acties:

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
FF een vraagje, bezoekers van mijn site, kunnen afmetingen van een tabel in centimeters opgeven, dit wordt dan op een andere pagina weergegeven. Ik gebruik hiervoor het volgende stukje code
code:
1
2
3
4
5
6
hoogte      = CLng(Request.Form("hoogte"))
breedte = CLng(Request.Form("breedte"))


pxhoogte    = hoogte * 50
pxbreedte   = breedte * 50

het probleem komt wanneer de form variabelen een komma bevatten, dan lijkt asp de waarde voor de komma en de waarde achter de komma met 50 te vermenigvuldigen, ik heb het ook al met een punt geprobeerde en dan kijkt asp al niet eens naar de waarde achter de komma. Wie helpt mij?

BVD

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Wat ik nu ga zeggen heb je geen fluit aan maar in VBA doet ie het wel.

Misschien door hier naar te kijken breng ik je op ideeen.

Deze code werkt bij mij ook als ik mijn landinstellingen op US of NL zet.

Kijk eens met een messagebox of hij VOOR het doorsturen naar de volgende pagina de waardes wel goed heeft.
Wellicht werkt je code wel, maar is de opmaak of het ontvangen van de variabelen op de 2de pagina niet goed.

Dit heb ik getikt in VBA ter referentie:
code:
1
2
3
4
5
6
7
Private Sub btnREKENUIT_Click()

Hoogtenieuw = CLng(txtHOOGTE) * 0.5
Breedtenieuw = CLng(txtBREEDTE) * 0.5

MsgBox ("Hoogte is: " & Hoogtenieuw & " en breedte is: " & Breedtenieuw)
End Sub

Verwijderd

Ik heb het net ook in ASP.NET gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Dim varHoogte As Long
      Dim varBreedte As Long

      varHoogte = txtHOOGTE.Text
      varBreedte = txtBREEDTE.Text

      txtNIEUWEHOOGTE.Text = varHoogte / 2
      txtNIEUWEBREEDTE.Text = varBreedte / 2

End Sub

We kunnen vermenigvuldigen met 0.50 of delen door 2 natuurlijk!

Als je wilt stuur ik je mijn hoogtebreedte.aspx file toe.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 17:42

Gerco

Professional Newbie

Het kan aan mij liggen, maar als je CLng gebruikt, hakt hij het gedeelte achter de punt gewoon van je getal af.

Dus je opmerking "ik heb het ook al met een punt geprobeerde en dan kijkt asp al niet eens naar de waarde achter de komma." raakt kant noch wal, want je hebt het namelijk (expres) zo gemaakt.

Probeer eens CSng() of CDbl().

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Om het wat op te helderen:
CLng Long -2,147,483,648 to 2,147,483,647; fractions are rounded.
(zo gepakt uit de help van VBA Word XP)

Dus ik kan VET achter de komma zitten..hij maakt wel een afronding van 1 cijfer achter komma(in VBA).

Met Double maakt dat weer niet uit natuurlijk en krijgt hij de meest achterlijke waardes achter de komma.
CDbl Double -1.79769313486231E308 to
-4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values.
(let op: niet rounded.

Maar omdat het een tabel betreft is dat niet zo handig denk ik als hij 10 cijfers achter de komma heeft :)

  • TheMrH
  • Registratie: April 2000
  • Laatst online: 01-09 22:45
Ehm... in Amerika is de komma wat bij ons de punt is. De digit grouper dus....
CLng Long -2,147,483,648 to 2,147,483,647; fractions are roundedp
is bij ons dus eigenlijk
CLng Long -2.147.483.648 tot 2.147.483.647; decimalen worden afgerond

The box said 'requires Windows 95 or better', so I installed Linux...


Verwijderd

Klopt, maar voor de code maakt dat niet uit want hij kan ook gewoon delen door 2 zoals mijn code voor ASP.NET.

Ik weet trouwens niet waarom hij deelt door 50, maar het antwoord zal van de topic-starter moeten komen :?

Ik zie het hele nut niet om te delen door .50 of ,50 (afhankelijk van instelling). Als dit nodig is (en ook andere getallen gebruikt moeten worden) dan valt de oplossing eromheen te coden om bijvoorbeeld te achterhalen welke landinstellingen / regional settings de user gebruikt.

Tot die tijd doen we leuk delen door twee :)
Pagina: 1