Aritmetikai túlcsordulás akkor következik be, amikor egy számítás, például egy aritmetikai művelet vagy típuskonverzió olyan értéket eredményez, amely nagyobb, mint a fogadó típus kapacitása.
Az int és long típusú kifejezések, valamint előjel nélküli megfelelőik ilyenkor csendben átfordulnak.
Az egészszám-műveletek viselkedése módosítható a checked kulcsszó használatával. Ha egy checked blokkon belül túlcsordulás történik, a rendszer egy OverflowException példányt dob.
int one = 1;
checked
{
int expr = int.MaxValue + one; // OverflowException is thrown
}
// or
int expr2 = checked(int.MaxValue + one); // OverflowException is thrown
A float és double típusú kifejezések a végtelen egy speciális értékét veszik fel.
A decimal típusú kifejezések OverflowException példányt dobnak.
Hyperia országnak megvannak a maga problémái. Az infláció különösen elszabadult. Berepítettek, hogy leszerződj a központi bankhoz.
A belső adminisztráció egyszerűsítése érdekében a központi bank minden címletet részekre bontott: egy alapra, amely viszonylag változatlan marad, és egy szorzóra (amely minden címletnél ugyanaz), amely évente, hetente vagy akár naponta változhat.
Nyomtatáskor a bankjegyeken feltüntetett címletek az alap és a szorzó szorzataként jelennek meg.
Mire ezt a rendszert bevezették, a legkisebb bankjegy címlete már 10 000 000 volt. Az alábbi táblázat a rendszer bevezetésekor érvényes helyzetet mutatja (az első 3 címletre). Azóta a helyzet sokkal rosszabb lett, és nemcsak a szorzó változik, hanem az alap is.
| Alap | Szorzó | Címlet |
|---|---|---|
| 10 000 | 1 000 | 10 000 000 |
| 50 000 | 1 000 | 50 000 000 |
| 100 000 | 1 000 | 100 000 000 |
| ... | 1 000 | ... |
Összefoglalva ez azt jelenti, hogy címlet = alap * szorzó.
Kérlek, implementáld a CentralBank.DisplayDenomination() metódust, amely megkapja az alapot és a szorzót, és visszaadja a szorzatukat stringként (alap * szorzó). A visszaadott numerikus stringet nem kell formázni.
Ha a szorzás túlcsordulást okoz, akkor a "*** Too Big ***" stringet kell visszaadni.
CentralBank.DisplayDenomination(10000L, 1000L);
// => "10000000"
CentralBank.DisplayDenomination(long.MaxValue / 2, 10000L);
// => "*** Too Big ***"
A központi bank ugyanezt a szorzóalapú megközelítést használja a GDP belső nyilvántartására. A statisztikákat egy alapcímletben rögzítik, majd a szorzóval felszorozzák.
Kérlek, implementáld a CentralBank.DisplayGDP() metódust, amely megkapja az alap GDP-t és az aktuális szorzót, majd a GDP-t stringként adja vissza.
Ha a GDP nem számítható ki, akkor a "*** Too Big ***" stringet adja vissza.
CentralBank.DisplayGDP(555f, 10000f);
// => "5550000"
CentralBank.DisplayGDP(float.MaxValue / 2, 10000f);
// => "*** Too Big ***"
A banknál a főnököd biztosra akar menni, hogy a bérszámfejtéskor nem lesz gond.
Implementáld a CentralBank.DisplayChiefEconomistSalary() metódust, amely egy alapegységekben kifejezett fizetést (a fentiek szerint) és egy szorzót vesz át, és visszaadja a szorzatot tartalmazó stringet.
Ha a fizetés nem számítható ki, akkor a "*** Much Too Big ***" stringet adja vissza.
CentralBank.DisplayChiefEconomistSalary(555000m, 10000m);
// => "5550000000"
CentralBank.DisplayChiefEconomistSalary(555000m, decimal.MaxValue / 2L);
// => "*** Much Too Big ***"
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.