Vinnaren i pepparkakshustävlingen!
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
Medlem
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

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback