Jonas Skrevet 10. oktober 2006 Del Skrevet 10. oktober 2006 Heisann, jeg har et litt flaut problem, som jeg ikke helt klarer å løse. Noen som ser noen feil i koden min? class MainClass { static void Main() { string s = "1.263684"; double d = Double.Parse(s, 2); Console.WriteLine(d.ToString()); } } Har tatt koden på husken, men det skulle da ikke være stort verre enn dette? Hvorfor i all verden funker det ikke? Med Parse får jeg InvalidArgumentException, og med TryParse får jeg bare 0. Lenke til kommentar
wolf5 Skrevet 10. oktober 2006 Del Skrevet 10. oktober 2006 (endret) Det finnes: Double.Parse(string s, IFormatProvider provider) Double.Parse(string s, NumberStyles style) Double.Parse(string s, NumberStyles style, IFormatProvider provider) Logisk nok vil koden din feile med InvalidArgumentException (Ugyldig argument) da du leverer inn en integer som 2ndre parameter. Rekkefølge for det du ønsker er: 1. Gjør om streng til double double d = Double.Parse(s) 2. Rund av double d = Math.Round(d, 2) Parse har ingenting med avrunding å gjøre. Dens eneste funksjon er å gå fra et format til et annet. (streng til tall, tall til streng, dato til streng, osv...) TryParse fungerer som Parse bare at den aldri kaster exception om strengen er ugyldig. Istedet returnerer den en bool som sier om parsingen var vellykket. En grei oppgradering fra .Net 2003 slik at man slipper å ta try-catch rundt en parsing. Endret 10. oktober 2006 av wolf5 Lenke til kommentar
GeirGrusom Skrevet 10. oktober 2006 Del Skrevet 10. oktober 2006 Du må bytte ut "." med "," class MainClass { static void Main() { string s = "1,263684"; double d = Double.Parse(s, 2); Console.WriteLine(d.ToString()); } } Lenke til kommentar
Jonas Skrevet 10. oktober 2006 Forfatter Del Skrevet 10. oktober 2006 Du må bytte ut "." med "," Tillat meg å si - EID !! Akkurat det jeg foreslo til klassekameraten min. (Han som spurte) Lenke til kommentar
hockey500 Skrevet 10. oktober 2006 Del Skrevet 10. oktober 2006 (endret) jaja, tenkte jeg faktisk ikke på. og dette er forresten koden akkurat slik den ser ut (nesten): decimal text = decimal.Parse(display.Text); text = Math.Round(text, 2); MessageBox.Show(text.ToString()); og du har rett, wolf5, jeg som tok feil. tok koden på husken, satt på skolen når innlegget ble skrevet (av meg). Takk for hjelpen , folkens! Endret 10. oktober 2006 av hockey500 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå