Wpis z mikrobloga

#programowanie #naukaprogramowania #csharp #gamedev

Mirki jak radzicie sobie z tryliardami? ( ͡° ͜ʖ ͡°)
Mam zmienną w grze, która będzie prędzej lub później przyjmowała ogromne wartości. Chcę zapisywać ją w postaci floata od 1-1000 + sufiks mnożnika, np 17 tysięcy -> 17K, 24 miliardy -> 24B itd. Jak mogę zrobić coś takiego?

I jeszcze - double w C# naprawdę ma taki zasięg jak piszą na msdn? ±5.0 × 10^−324 to ±1.7 × 10^308? Jeśli tak to mógłbym to wszystko zapisywać w jednej zmiennej, 308 zer nie przekroczę.
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@blackphoenix: w grach tak się zdarza. W Metin2 była taka inflacja "pieniędzy" (jak boty zaczęły zarabiać na siebie), że licznik się przekręcał.

I wtedy zrobili aktualizację z K, M, G, tak jak pisze @qweasdqweasd.

Jeśli wystarczy ci dokładność i zakres double, to weź. Jak chcesz dokładniej to BigInteger, tak jak pisze @Myrten, ale w nich troszkę mniej wygodnie robi się obliczenia (a przynajmniej tak jest w
  • Odpowiedz
@Optimum: use BigInteger Luke ;-)

p.s. double ma wielki zasięg ale jest niedokładny i nawet legendarny John Skeet się pierdyknął w swojej klasie do wydobywania wartości z double, więc jak dla mnie jedyny realny wybór do BigInteger ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@piot-rabi: A bardzo on niedokładny? Robię właśnie clickera, używam tylko dwóch miejsc po przecinku i jakieś drobne nieścisłości nie wpłyną na rozgrywkę :)
  • Odpowiedz