afronden in c#

Status
Niet open voor verdere reacties.

Polman

Gebruiker
Lid geworden
20 jun 2012
Berichten
9
Hallo beste Helpmijers met kunde omtrent C#

Ik heb het volgende script gemaakt in csharp:

advancedText19.Text="€ "+Convert.ToString(Convert.ToDecimal(ttAanmelding["OmvangZorg"])
*Convert.ToDecimal(ttIndividueleTarieven["Tarief"]));

Indien het tarief in centen gegeven wordt (bv € 2,32), dan krijg ik bij 10 dagen omvang zorg als resultaat € 23,200 (3 decimalen).
Heb ik bv 4 dagen a € 25,00 dan is het resultaat € 100,00 (wél 2 decimalen) (zie afbeelding).
Hoe krijg ik bij het tarief met centen nu toch 2 decimalen achter de komma?
Ik heb van alles geprobeerd (Math.Round etc) en vooralsnog lukt niets. Als ik eindelijk twee plekken achter de komma krijg, heb ik er bij ronde bedragen (4*25) er nog maar één (resp. 23,20 en 100,0).
Hoe kan dit en hoe kan ik dit aanpassen?????
 

Bijlagen

  • c#-afronden.jpg
    c#-afronden.jpg
    13,8 KB · Weergaven: 99
In Objective-C is het zo dat als je %f (voor float) in een string hebt staan, dat je %.2f kunt neerzetten. Misschien is dat hier ook zo?!
 
In Objective-C is het zo dat als je %f (voor float) in een string hebt staan, dat je %.2f kunt neerzetten. Misschien is dat hier ook zo?!

Helaas Jeroen, Ik heb dit op een flink aantal mogelijkheden geprobeerd, Maar niet gelukt. In ieder geval bedankt voor je reactie.
C# herkent in ieder geval '%' niet.
 
Daarvoor is 'decimal' gemaakt :)

[CPP]const decimal tariefX = 2.32M;
const decimal tariefY = 25.00M;

decimal x = tariefX * 10;
decimal y = tariefY * 4;[/CPP]

Hierna geldt: x = 23,20 en y = 100,00.
 
Daarvoor is 'decimal' gemaakt :)

[CPP]const decimal tariefX = 2.32M;
const decimal tariefY = 25.00M;

decimal x = tariefX * 10;
decimal y = tariefY * 4;[/CPP]

Hierna geldt: x = 23,20 en y = 100,00.

Helaas JoZ1, Ik heb dit na mijn vakantie uitgeprobeerd (vandaar mijn late reactie), maar tariefx is geen constante in mijn bewerking. Het tarief wordt steeds weer opgehaald vanuit de database en is elke berekening anders. Ik krijg dit ook terug als foutmelding.
Ik heb jouw oplossing als volgt proberen in te voegen (even alleen voor tarief x):

const decimal tariefx = (Convert.ToDecimal(ttAanmelding["OmvangZorg"]));
advancedText19.Text="€ "+Convert.ToString(tariefx*Convert.ToDecimal(ttIndividueleTarieven["Tarief"]));

De volgende foutmelding kreeg ik terug:

'advancedText19.GenerateScript line: 1 colum: 25 The expression being assigned to 'tarief' must be constant'

Ergo, het is mij dus nog steeds niet gelukt. Maar toch bedankt voor het meedenken.
Groet, Polman.
 
'const' mag weggehaald worden ;)

Ik dacht dat het een constante waarde was, vandaar dat ik het had toegevoegd..
 
'const' mag weggehaald worden ;)

Ik dacht dat het een constante waarde was, vandaar dat ik het had toegevoegd..

Wederom lukt het me niet.
Ik heb het volgende gescript:
decimal tariefx = (Convert.ToDecimal(ttAanmelding["OmvangZorg"]));
decimal tariefy = (Convert.ToDecimal(ttIndividueleTarieven["Tarief"]));
advancedText19.Text="€ "+(tariefx*tariefy);
en vervolgens kreeg ik weer de volgende uitkomst:

"Verwachte afname Tarief: Bedrag per week:
per week:
10 dagdelen €2,32 €23,200
4 dagdelen €25,00 €100,00 "

Ergens moet dit toch gewoon kunnen??? Het staat zo lelijk op een offerte.
 
Als ik het goed heb, zou dit moeten werken:
Code:
advancedText19.Text="€ "+(tariefx*tariefy).ToString("N2");
Aan ToString kan je een formatstring opgeven, zie hier voor meer mogelijk format opties.
 
Als ik het goed heb, zou dit moeten werken:
Code:
advancedText19.Text="€ "+(tariefx*tariefy).ToString("N2");
Aan ToString kan je een formatstring opgeven, zie hier voor meer mogelijk format opties.

Geweldig!! Dit had ik even nodig. Het heeft even geduurd, maar met dit antwoord kan ik een mooi produkt leveren. Het is me nu helemaal gelukt.
Van elk antwoord heb ik weer wat geleerd, maar het laatste heeft mij uit de brand geholpen.
Iedereen bedankt voor het meedenken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan