Jak w Delphi sprawdzić czy liczba jest wymierna czy niewymierna??
Nie da się sprawdzić. Liczby masz przechowywane z określoną dokładnością, natomiast liczba niewymierna ma rozwinięcie dziesiętne nieskończone (Liczby wymierne tj. 1/2 też mają rozwinięcie nieskończone ale okresowe).
[dopisek]
[glowa] to miała być 3 nie ten klawisz. [wstyd]
Akurat 1/2 ma rozwiniecie skonczone (0.5), wlasciwszym przykladem byloby np. 1/3
Akurat 1/2 jak napisał Szymek ma rozwinięcie nieskończone okresowe:
1/2 = 0.5(0) :)
1/3 zresztą też
1/3 = 0.(3)
A co do definicji liczby niewymiernej, to jest to liczba, której nie da się przedstawić w postaci ułamka p/q, gdzie p, q są liczbami całkowitymi.
No i oczywiście w komputerach są wyłącznie liczby wymierne. W dodatku bardzo ograniczone. A stwierdzenie, czy dana liczba jest niewymierna jest bardzo trudne nawet dla człowieka. Tzn. nie ma ogólnego schematu... (udowodnij, że Pi albo liczba e są liczbami niewymiernymi).
to mam inne pytanie czy da się sprawdzić czy liczba jest całkowita czy ułamkowa?
Wiem, że to trochę OT, ale w jaki sposób liczba 1/2 ma rozwinięcie nieskończone? Że 1/3 to rozumiem, ale 0.5? Proszę o oświecenie prostego człowieka...
a to to już nie problem, np:
if Liczba=Trunc(Liczba) then
LiczbaJestCalkowita
else
LiczbaNieJestCalkowita;
[dopisane]
Rozwinieciem nieskończonym 1/2 po cyfrze 5 są zera czyli 0.5(0), czyli 0.50000000000000000000000000000000000000000000000000000000000000