Diskuze: Small Basic - nefunguje příkaz Math.Round
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Ahoj, co Ti na tom nefunguje? Math.Round zaokrouhluje na nejbližší sudé číslo (čili 0, 2, 4, atd.). Nejsem si jistý jestli příkaz For bere desetinná čísla. V jakých číselných odstupech chceš ta čísla používat? Možná by bylo lepší použít cyklus while. Tady je příklad, kde se i na začátku naplní počáteční hodnotou a inc se naplní přírůstkem, o který se bude i při každém kroku cyklu zvětšovat:
i = 0.5
inc = 0.5
While (i < 21)
TextWindow.WriteLine(Math.Round(i))
i = i + inc
EndWhile
Ahoj,
Math.Round zaokrouhluje na celé číslo, avšak chybně při hodnotách 0.5;
2.5; 4.5; atd.
For i = 0 To 5 Step 0.1
TextWindow.WriteLine(i + "," + Math.Round(i))
EndFor
Programuji ruletu a chtěl jsem rozpoznat sudé a liché čísla. Hledal jsem vhodný příkaz a tento nemůžu použít. Tak jsem to vymyslel zatím takto.
For i = 1 To 20
a = Math.GetRandomNumber(37) - 1
b = Math.Floor(a/2)
c = Math.Ceiling(a/2)
TextWindow.Write(a + " , ")
If a = 0 Then
TextWindow.WriteLine("nula")
ElseIf b = c Then
TextWindow.WriteLine("sudá")
Else
TextWindow.WriteLine("lichá")
EndIf
EndFor
No, tady by šel pro celá čísla s výhodou využít příkaz Remainder, čili zbytek po dělení:
zbytek = Math.Remainder(number,2)
Pokud se číslo vydělí dvěma, tak zbytek je vždy 0 pro sudé číslo a 1 pro liché.
Tady je na to příklad na Youtube.
Ano, Math.remainder je ideální. Nakonec jsem to naprogramoval přesně jako
v tom videu.
A ten příkaz MathRound je k ničemu.
Zobrazeno 5 zpráv z 5.