Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Pretypovanie real na integer mimo trunc - Delphi

Dobrý deň, priatelia, vedeli by ste mi, prosím, dať kvalifikovanú odpoveď na otázku, ako v Delphi 6 spoľahlivo pretypovať real alebo extended na integer? Vždy ma učili používať na to funkciu trunc, ktorá by vraj mala vrátiť celočíselnú časť z reálneho čísla. Prax mi však ukázala, že táto definícia nie je celkom správna. Neraz sa mi stalo, že moja aplikácia nepracovala celkom správne a často bol na vine práve príkaz trunc, ktorý vrátil nižšiu hodnotu najmä vtedy, ak parametrom bol nejaký výpočet alebo záporné číslo. Práve teraz tu mám relatívne jednoduchý prípad - užívateľ do editačného poľa vpíše reálne číslo, ktoré potom má byť vynásobené 1000 a ďalej už spracovávané ako celé číslo. Ak však do editačného poľa vpíšem -16.275 a urobím nasledovné operácie:
var x,y:real;i:integer;
x:= strtofloat(ansireplacetext( edit2.text,'.',',')); // prevediem si obsah edit pola na real - výsledok je -16,275;
y:=x*1000; // vynásobím 1000 - výsledok je -16275 v premennej typu real;
i:=trunc(y);
výsledkom nie je -16275 ale -16274. Takéto situácie sa mi stali už viackrát, preto hľadám spôsob, ako skutočne spoľahlivo pretypovať real na integer bez ohľadu na to, či je číslo kladné alebo záporné a dostať naozaj tú časť čísla, ktorá je pred desatinnou čiarkou. Vďaka.

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny