2018-02-27, 22:45
  #1
Medlem
Hej, jag håller på att lära mig C# och det går (än så länge) bra! Jag skulle dock behöva hjälp med att avrunda till bara halva och hela tal. Kanske är enkelt att lösa, men jag började med programmering förra måndagen så jag har inte all kunskap ännu.

Jag försöker nedan göra ett program som konverterar Fahrenheit till Celsius och som sedan ska avrundas till en decimal. Men jag vill att det endast avrundas till 30.5 eller 31.0 osv. Finns det någon sorts kod att lägga till efter/ersätta math.round för detta eller behöver jag någon algoritm?:


double fahr;
double newcelsius;

Console.WriteLine("Ange temperatur");
fahr = double.Parse(Console.ReadLine());
double celsius = (fahr - 32) * 5 / 9;
newcelsius = Math.Round(celsius, 1);

Console.WriteLine("Du skrev {0} fahrenheit och det omvandlades till {1} celsius!", fahr, newcelsius);
Console.ReadKey();


Inga elaka kommentarer tack
Skrattar du förlorar du!
Citera
2018-02-27, 23:21
  #2
Avslutad
Jag skulle göra så här :

Multiplicera med 2
Avrunda till heltal
Dela med 2.
Citera
2018-02-27, 23:22
  #3
Medlem
Testa:
newcelsius = Math.Round(celsius * 2)/2;

Tanken är att du först avrundar till närmaste heltal och skippar decimalen i avrundningen.
Sen delar du det talet med 2. Ett heltal dividerat med 2 blir ,0 om det är jämnt och ,5 om det är udda. För att kunna dela med 2 så måste du multiplicera med 2 för att inte förändra värdet.

Sanity check:
30,2 * 2 = 60,4 => 60/2 = 30
30,3 * 2 = 60,6 => 61/2 = 30,5
30,6 * 2 = 61,2 => 61/2 = 30,5
30,7 * 2 = 61,4 => 61/2 = 30,5
30,8 * 2 = 31,6 => 62/2 = 31

Edit:
Pucktvåa...
Citera
2018-02-27, 23:50
  #4
Medlem
Det funkade felfritt, tackar!
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