WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   behöver hjälp med ett litet script (https://www.wn.se/forum/showthread.php?t=1047344)

nabil_akhlaque 2011-03-25 22:51

behöver hjälp med ett litet script
 
Hejsan,
skulle behöva lite hjälp med att lösa denna script.
För någon anledning får jag 'dPaysonFee' till 100, när svaret egentligen borde bli 6.
felet ligger vid ' (dDonationAmount * 0.03) + 3.00' som räknar ut detta till 100, när det egentligen bör vara 6... :S

iDonationAmount = 100;
double dDonationAmount = double.Parse(iDonationAmount.ToString());
double dPaysonFee = (dDonationAmount * 0.03) + 3.00;
dDonationAmount = dDonationAmount - dPaysonFee;
iDonationAmount = int.Parse(dDonationAmount.ToString());

skulle också uppskatta om någon kunde hjälpa dig att göra den mindre... känns rätt krångligt script för sån liten sak...

hnn 2011-03-26 00:08

Dags att gå om årskurs 4, 5 och 6? :-)
Enkel matematik.

( 100 * 0,03 ) = 3
3 - 3 = 0.

(Remsa från Kalkylatorn:
Kod:

(100*0.03)-3
=0

)

Conny Westh 2011-03-26 00:22

Blandning av heltal och double om jag inte tolkar bilden helt fel.

Ser ut att vara Java-kod:

Kod:

// Declaration and defaults
double dblDonationAmount=0;
double dblPaysonFeeSEK=0;
double dblPaysonFeePercent=0.03;
double dblPaysonFeeMinimum=3.00;
double dblReceivedAmount=0;

// Calculation of PaysonFees
dblDonationAmount = double.Parse(dblDonationAmount.ToString());
dblPaysonFeeSEK = (dDonationAmount * dblPaysonFeePercent) + dblPaysonFeeMinimum;
dblReceivedAmount= dblDonationAmount - dblPaysonFeeSEK;


Det stora felet var att du drog bort minimiavgiften från avgiftsvariabeln, så jag bytte i princip tecken från minus till plus, sen har jag rensat bort heltalsvariabler som inte verkade tillföra någon nytta.

Min rekommendation är att du bryter ut detta till en egen klass som du kallar PaysonAPI eller så och att du lyfter bort parseanropet och i stället skickar in färdigparsat data i en double-deklarerad variabel som parameter till en Beräkningsmetod.

Blanda inte ihop användargränssnitt med affärsregler på detta sätt som skett med att ha parsefunktioner ihop med beräkningar av avgifter. Om du separerar användargränssnittet så kan du ha gränssnittsrelaterad felhantering där och annan felhantering inne i beräkningarna som bättre passar där.

Återanvänd inte variabler så värdet inte stämmer med namnet på variabeln (dblDonationAmount ), jag bytte namnet på slutvariabeln till dblReceivedAmount så det beskriver vad den innehåller.

goose 2011-03-26 00:49

också använd decimal istället för double när du räknar med pengar


Alla tider är GMT +2. Klockan är nu 15:46.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson