2015-06-27, 16:34
  #1
Medlem
Litteraturs avatar
Hallå!

Håller på att försöka lära mig lite grunder i c# och har stött på ett problem. Jag vill skapa ett program där användaren matar in ett decimaltal, typ 5,67, och får tillbaka det närmsta heltalet, dvs 6.

Så här ser min kod ut:
Kod:
            Console.Write("Ange decimaltal: "); 
            string str = Console.ReadLine();
            float nummer = Convert.ToInt32(str);

            Console.WriteLine("Det närmsta heltalet är: " + nummer);
            Console.ReadKey();
        
Får felmeddelandet "Indatasträngen har ett felaktigt format" när jag skrivit mitt decimaltal och tryckt enter.

Vad är det för fel jag har gjort?
Mvh!
Citera
2015-06-27, 16:55
  #2
Medlem
Pellejonsons avatar
Hur separerar du decimaltalet vid input? med punkt eller kommatecken?

Ingen fena på C# men det kanske kan vara problemet. 10.2 och 10,2 är inte samma sak beroende på formateringen.
Citera
2015-06-27, 16:56
  #3
Medlem
tj.s avatar
Använder du kommatecken eller punkt? Det spelar roll beroende på vilka culture-settings du använder. Sen förstår jag inte varför du deklarerar nummer som en float när du försöker parsa indatat till en integer.

Kör
Kod:
double number Double.Parse(someString); 
__________________
Senast redigerad av tj. 2015-06-27 kl. 17:00.
Citera
2015-06-29, 18:03
  #4
Medlem
Testat att använda Math.Round()?

Exempel:

Kod:
using System;

class Program
    {
        static void Main()
        {
            decimal decimaltal; //Deklarerar ett decimaltal vid namn decmaltal

            Console.WriteLine("Skriv in ett decimaltal");
            decimaltal = Convert.ToDecimal(Console.ReadLine()); //Assignerar decimaltal till input

            decimaltal = Math.Round(decimaltal); //Talet avrundas här

            Console.WriteLine(decimaltal); //Skriver ut decimaltalet
            Console.ReadKey(); //Håller programmet öppet tills en knapp trycks in
        }
    }

Programmet funkar fint för mig... Om jag skriver in 43,7 så blir output'en 44.

//SweGustaf
Citera
2015-07-10, 14:13
  #5
Medlem
fittPlusPluss avatar
går väl att göra så här också har jag för mig?


Kod:
double d = 5.67;
double avrundat = (int)(d + 0.5);
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in