Môj problém:
Na vstupe sú 2 desatinné čísla.
Prvé (x) je nezáporné, druhé (y) je buď 3.30 alebo 4.95.
Zaujíma ma, či je prvé číslo (x) po zaokrúhlení na 2 desatinné miesta násobkom druhého čísla (y).
Chcem vrátiť 0, ak je násobkom a nenulové číslo inak.
Príklady:
(9.90, 3.30) -> 0,
(9.91, 3.30) -> nenulové číslo,
(9.90499999, 3.30) -> 0,
(9.905, 3.30) -> nenulové číslo
Na celých číslach by som využil operátor %, ale operator%(Float:,Float:) nie je definovaný.
Ale nepríde mi to veľmi elegantné.
S floatmi nepracujem často, viem, že sú tam nejaké problémy s presnosťou...
Bol by som rád, keby ste mi poradili, ako to spraviť elegantnejšie, prípadne povedali, čo sa môže v mojom riešení pokaziť.
PS: Keby sa niekto pýtal, k čomu mi to je, ide o detekciu upraveného poškodenia pri zbraniach shotgun, sawn-off shotgun a combat shotgun (jeden brok berie 3.30, u combat 4.95).
Dotaz
DuFF 79
Zdravím.
Môj problém:
Na vstupe sú 2 desatinné čísla.
Prvé (x) je nezáporné, druhé (y) je buď 3.30 alebo 4.95.
Zaujíma ma, či je prvé číslo (x) po zaokrúhlení na 2 desatinné miesta násobkom druhého čísla (y).
Chcem vrátiť 0, ak je násobkom a nenulové číslo inak.
Príklady:
(9.90, 3.30) -> 0,
(9.91, 3.30) -> nenulové číslo,
(9.90499999, 3.30) -> 0,
(9.905, 3.30) -> nenulové číslo
Na celých číslach by som využil operátor %, ale operator%(Float:,Float:) nie je definovaný.
Zatiaľ som prišiel s niečím takýmto:
Ale nepríde mi to veľmi elegantné.
S floatmi nepracujem často, viem, že sú tam nejaké problémy s presnosťou...
Bol by som rád, keby ste mi poradili, ako to spraviť elegantnejšie, prípadne povedali, čo sa môže v mojom riešení pokaziť.
PS: Keby sa niekto pýtal, k čomu mi to je, ide o detekciu upraveného poškodenia pri zbraniach shotgun, sawn-off shotgun a combat shotgun (jeden brok berie 3.30, u combat 4.95).
Link to comment
Share on other sites
2 odpovědí na tuto otázku
Recommended Posts