Hjälp! Programmering 1 c# Avrundaren

Permalänk
Medlem

Hjälp! Programmering 1 c# Avrundaren

Har fastnat på en uppgift och vet inte riktigt vad som är fel. Uppgiften är:

Uppgiften går ut på att du ska be användaren skriva in ett tal med decimaler.
Därefter ska ni be användaren skriva in hur många decimaler användaren vill ha.
Din kod ska avrunda talet enligt ovan, men också med ett på förbestämt antal decimaler (exempelvis tre).
Exempel:
Användaren skriver in talet 1,3457322 och 5 för antal decimaler. Talet redovisas dels med så många decimaler som användaren valt (1,34573), samt även med tre decimaler (1,346).

Det jag har kommit fram till är:

{ class Program { public static void Main(string[] args) { string nr; double nr1; int dec1; string dec; Console.WriteLine("Välj ett nummer med decimaler."); Console.ReadKey(); nr = Console.ReadLine(); nr1 = double.Parse(nr); Console.WriteLine("Hur många decimaler vill du ha?"); dec = Console.ReadLine(); dec1 = int.Parse(dec); Console.Write("Då avrundar vi det till:"); Console.WriteLine(Math.Round( nr1 , dec1 )); Console.ReadKey();

Problemet är att första siffran i heltalet försvinner i utskriften.
Jag misstänker att det är nr1 = double.Parse(nr); som är fel.. Men vad ska vara där istället?

Permalänk
Medlem

Du missatänker? Kör debug och se vart det blir fel så kan du ta det vidare därifrån!

Använd gärna också [ code] [/ code] så blir det lättare att läsa (utan mellanslag då).

using System; class Program { static void Main(string[] args) { Console.WriteLine("Hello, world!"); } }

Permalänk
Medlem

@gonace: Problemet är att första siffran i heltalet försvinner i utskriften. Kom på att jag inte skrev det..

Permalänk
Medlem

@Amurcute: Kan du om du kör debugging se om Console.ReadLine(); avspeglar det man skriver in? Jag skulle gissa att det blir fel när användaren skriver in sitt värde och att det beror på att ReadKey(); skapar problem.

Permalänk
Medlem
Skrivet av Amurcute:

@GonAce: Problemet är att första siffran i heltalet försvinner i utskriften. Kom på att jag inte skrev det..

Varför Console.ReadKey();?
Känns som att det bör vara där din första siffra hamnat? (Dvs inte alls vid utskriften utan vid inläsningen. Som tidigare föreslagits, debugga.)

Visa signatur

Desktop: Ryzen 5800X3D || MSI X570S Edge Max Wifi || Sapphire Pulse RX 7900 XTX || Gskill Trident Z 3600 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Medlem

@Amurcute: Titta på svaret ifrån @evil penguin det var lite mer pedagogiskt än mitt

Permalänk
Medlem

Tusen tack! Det var precis det som var problemet! Har suttit med det här i dagar...

Permalänk
Medlem
Skrivet av Amurcute:

Tusen tack! Det var precis det som var problemet! Har suttit med det här i dagar...

Som sagt, använd debugger. Blir jättetydligt då vad som händer i varje steg.

Visa signatur

Desktop: Ryzen 5800X3D || MSI X570S Edge Max Wifi || Sapphire Pulse RX 7900 XTX || Gskill Trident Z 3600 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk

@Amurcute:

Koden funkar utan problem när jag kör den med Console.ReadKey();
Tvärtom så försvinner konsolen när jag tar bort Console.ReadKey();

Visa signatur

MSI GeForce RTX 2070 Gaming Z 8GB
Intel Core I7 9700K 3.6GHz
MSI MPG Z930I Gaming Edge AC

Permalänk
Medlem

@Amurcute: Hej. Har du löst uppgiften?

Permalänk
Medlem

@Amurcute: Hur kunde du? Vad har du gjort?

Permalänk

@Hitman08:

string num; double num1; int decimaltal1; string decimaltal; Console.WriteLine("Välj ett nummer med decimaler."); num = Console.ReadLine(); num1 = double.Parse(num); Console.WriteLine("Hur många decimaler vill du ha?"); decimaltal = Console.ReadLine(); decimaltal1 = int.Parse(decimaltal); Console.Write("Då avrundar vi det till:"); Console.WriteLine(Math.Round(num1, decimaltal1)); Console.ReadKey();

Visa signatur

MSI GeForce RTX 2070 Gaming Z 8GB
Intel Core I7 9700K 3.6GHz
MSI MPG Z930I Gaming Edge AC

Permalänk
Medlem
Skrivet av Karrar_90:

@Hitman08:

string num; double num1; int decimaltal1; string decimaltal; Console.WriteLine("Välj ett nummer med decimaler."); num = Console.ReadLine(); num1 = double.Parse(num); Console.WriteLine("Hur många decimaler vill du ha?"); decimaltal = Console.ReadLine(); decimaltal1 = int.Parse(decimaltal); Console.Write("Då avrundar vi det till:"); Console.WriteLine(Math.Round(num1, decimaltal1)); Console.ReadKey();

Tack för svaret. Jag har precis löst den i natt. Problemet var mellan punkt och komma teckena. )

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av Amurcute:

Tusen tack! Det var precis det som var problemet! Har suttit med det här i dagar...

Hej
Vad tittade du på för att lösa uppgiften?
Jag menar vad är detta som hjälpte dig som videor på you tube.