Avatar billede stkol Nybegynder
23. maj 2005 - 22:06 Der er 15 kommentarer og
1 løsning

Funtion til udregning af "psykologisk" pris

Hejsa

I forbindelse med programeringen af en shop, skal jeg have udregnet pris ud fra en lignende formel : pris*dollarkurs*DB*landedcost = f.eks. kr. 346,73. Dette er ikke mit problem, men der imod at denne pris gerne skulle være "psykologisk rigtig" f.eks. 349,00 eller hvis prisen f.eks er 333,75 skal prisen være 329,00

Hvordan får man dette udregnet??

På forhånd tak :-)

/Stig :-)
Avatar billede goose Nybegynder
23. maj 2005 - 22:14 #1
Jeg er ikke sikker på jeg forstår dit spørgsmål, hvis prisen der bliver udregnet giver 333,75 hvorfor skal den så vises som 329,00 - det giver da ingen mening ?

/Goose
Avatar billede nielle Nybegynder
23. maj 2005 - 22:15 #2
PyckoPris = Round (1.0 * Pris / 100, 0) * 100 - 1
Avatar billede nielle Nybegynder
23. maj 2005 - 22:19 #3
PsykoPris = Round(1.0 * Pris / 10, 0) * 10 - 1

346,73 -> 34,673 -> 35,0 -> 350,0 -> 349,0

333,75 -> 33,373 -> 33,0 -> 330,0 -> 329,0
Avatar billede nielle Nybegynder
23. maj 2005 - 22:20 #4
Men du skal nok have en special regel til når du er nede omkring de 10-15 kr (eller dollars eller hvad du bruger).
Avatar billede nielle Nybegynder
26. maj 2005 - 17:04 #5
Had du fået kigget på det?
Avatar billede stkol Nybegynder
27. maj 2005 - 08:01 #6
Hej Nielle

Tak for dit svar! Nu har jeg endelig fået kigget på det :-)

Jeg får følgende fejl:

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'Round'


Jeg har skrevet det på denne måde:

<%
PsykPris = Round(1.0 * 377,22 / 10, 0) * 10 - 1
response.wite PsykPris
%>
Avatar billede nielle Nybegynder
27. maj 2005 - 16:50 #7
> PsykPris = Round(1.0 * 377,22 / 10, 0) * 10 - 1

Det dur jo heller ikke. ASP ser nemlig ikke kommaet i 377,22 på samme måde som vi danskere. Decimaltal i ASP skal være opgivet med engelsk notation: 377.22.

I dette tilfælde fortolker ASP det simpelthen som om at du har tre argumenter inde i din Round, og det kan den ikke lide - "Wrong number of arguments".

Løsningen er at konvertere danske decimal-kommaer til engelske decimal-punktummer først. Og så den anden vej bagefter:

GlPrisDk = "377,22"
GlPrisUs = Replace(GlPrisDk, ",", ".")
NyPsykoPrisUs = Round(1.0 * GlPrisUs / 10, 0) * 10 - 1
NyPsykoPrisDk = Replace(NyPsykoPrisUs, ".", ",")
Avatar billede stkol Nybegynder
27. maj 2005 - 17:16 #8
Det giver mig dette tal : 37719
Avatar billede nielle Nybegynder
27. maj 2005 - 18:00 #9
Hvad?! Prøv lige at poste din kode. Der er da et eller andet helt mysisk der.
Avatar billede stkol Nybegynder
27. maj 2005 - 18:25 #10
<%
GlPrisDk = "377,22"
GlPrisUs = Replace(GlPrisDk, ",", ".")
NyPsykoPrisUs = Round(1.0 * GlPrisUs / 10, 0) * 10 - 1
NyPsykoPrisDk = Replace(NyPsykoPrisUs, ".", ",")
response.write NyPsykoPrisDk
%>
Avatar billede nielle Nybegynder
27. maj 2005 - 18:35 #11
Prøv lige at udskrive mellemresultatet:

1.0 * GlPrisUs / 10
Avatar billede nielle Nybegynder
29. maj 2005 - 17:22 #12
Hej, igen

Det lader til at dit site er sat op til dansk, f.eks. med en linje i stil med:

<%
Session.LCID = 1030
%>

- et eller andet sted i din kode (eller i global.asa).

Det er skam fint nok, men det betyder ikke at ASP ikke internt regner med decimalt-punktum, og det er det som giver problemerne. Det grundlæggende regnestykke er dog i orden, og ser sådan her ud:

<%
GlPris = "377,22"
NyPsykoPris = Round(1.0 * GlPris / 10, 0) * 10 - 1
Response.Write FormatCurrency(NyPsykoPris, 2)
Response.Write "<br>"
Response.Write FormatNumber(NyPsykoPris, 2)
%>

Du bestemmer selv om det så er "FormatCurrency" eller "FormatNumber" du efterfølgende vil bruge.
Avatar billede stkol Nybegynder
29. maj 2005 - 22:25 #13
Y E S !!! Det virker.. Det var bare fedt! 1000 tak. Du snakkede noget om at man burde lave en funktion når prisen var nede omkring de 15-25 kr. Hvad skal der til for at man kunne lave en funktion som runder op til nærmeste kr. når prisen er under 30 kr??? - Husk lige at smide et svar :-)
Avatar billede nielle Nybegynder
29. maj 2005 - 22:49 #14
Noget i denne her stil:

GlPris = "377,22"

if GlPris<30 then
    NyPris = Round(1.0 * GlPris, 0)
else
    NyPris = Round(1.0 * GlPris / 10, 0) * 10 - 1
end if

Response.Write FormatCurrency(NyPris, 2)
Response.Write "<br>"
Response.Write FormatNumber(NyPris, 2)
Avatar billede nielle Nybegynder
29. maj 2005 - 22:49 #15
...og et svar :^)
Avatar billede stkol Nybegynder
31. maj 2005 - 23:11 #16
Tusind tak Nielle :-) det var fedt *SS
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester