Decimaler i C#

Tags:    c#

Hej alle sammen.
Jeg er ny både her, og i kodningens verden og der er derfor en masse jeg ikke forstår ;) lige nu har jeg et problem med decimaltal i C#. jeg er i gang med at lave et program, der kan regne alle mine formler fra skolen ud ved simpel indtasting... dette går imidlertidigt også meget fint, men da jeg så skal skrive pi ind som 3.14195, får jeg en error og programmet kan ikke afvikles. så mit store spørgsmål er: Hvordan kan jeg skrive et decimaltal ind i koden, uden at få en error?




Du skal bruge typen double eller float i stedet for int (som jeg går ud fra du bruger nu)

Og hvis du indtaster det i en TextBox skal du huske og konverter til double via Convert.ToDouble(txtTal.txt)



Indlæg senest redigeret d. 08.03.2009 18:26 af Bruger #11386
Nu viser du ikke noget kode, men jeg tror at når du indtaster et tal så benytter du int (integer). Integer er hele tal og vil derfor ikke kunne rumme decimaltal. Her skal du bruge float eller double.



Ja som Casper siger skal du bruge doubles hvis du vil regne med decimaler, og så har .net pi i sin Math-klasse.

f.eks.
Fold kodeboks ind/udCSharp kode 


(er det ikke sådan det er... nu bliver jeg helt i tvivl :P)



nej jeg bruger double og det er det der undrer mig. har helt glemt koden men her er den :)

det med små bogstaver er selve textboxen og det store er en variabel hvis i har lidt svært ved at finde rundt ;)

Fold kodeboks ind/udKode 


og den giver mig så en error ved pi. er der noget jeg har overset? på forhånd tak for hjælpen

EDIT: efter jeg skrev dette så jeg lige steffens kode og det løste mit problem :9 mange tak for jeres opmærksomhed og hjælp :D



Indlæg senest redigeret d. 08.03.2009 21:57 af Bruger #14770
Der er en korrekt og helt præcis (eller så præcis som den kan blive) definition af pi under System.Math klassen du kan benytte.

Du kan se det hele her:
http://msdn.microsoft.com/en-us/library/system.math.aspx
http://msdn.microsoft.com/en-us/library/system.math.pi.aspx

I øvrigt bør din kode være som følger:
Fold kodeboks ind/udCSharp kode 


Du skal også være opmærksom på hvor stort et decimaltal double kan indeholde...



Indlæg senest redigeret d. 09.03.2009 13:33 af Bruger #2243
Jeps det fandt jeg ud af at der var ;) jeg ved godt at der i double kan være 15 cifre :) forresten, må man spørge hvorfor det er jeg skal skrive "double Diameter = 0.0000000000;" frem for bare at skrive "= 0;" ?



Du må først og fremmest undskylde at jeg først svarer dig nu, men har haft meget travlt.

Årsagen til du skal skrive et kommatal når du erklærer din double og ikke "0" er, at hvis du skriver 0 (uden kommatal) så vil .NET gå ud fra at det altid er et heltal der skal ligge i den double selvom den er erklæret som en double.

Derfor, for at få et kommatal, skal du erklære din double som et kommatal.



t