Jak zrobic zeby program sprawdzal czy podalem int czy float?
Int czy float?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 260
Ogólnie mogłbyś prawdzać czy liczba jest całkowita, ale przez to, że float jest zmiennoprzecinkowa byś raczej zawiódł by się na tym. Może wczytaj do char'a*/string'a i sprawdzaj czy jest kropka?
PS. A potem skonwertuj do int'a/float'a.
- Rejestracja: dni
- Ostatnio: dni
- Wczytać do double Podano.
- Jeżeli (int)Podano==Podano oznacza to że podał int.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 91
Można też tak:
if ( liczba == (float)liczba ) => zmiennoprzecinkowa
if ( liczba == (int)liczba ) => całkowita
... przez rzutowanie.
- Rejestracja: dni
- Ostatnio: dni
A jak użytkownik wpisał 23.000, to wpisał liczbę typu int, czy typu float?
- Rejestracja: dni
- Ostatnio: dni
Jeżeli po przecinku są same zera, to liczba jest całkowita, nieważne czy użytkownik uwzględnił przecinek.
- Rejestracja: dni
- Ostatnio: dni
float x;
float p;
cin >> x;
p = modff(x, &p);
cout << "p = " << p << "\nx = " << x << "\n";
(p == 0) ? cout << "liczba calkowita" : cout << "liczba rzeczywista";
może tak? Oczywiście nastąpi przekłamanie gdy zostanie wprowadzona za duża ilość cyfr po przecinku.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
Skoro dla niektórych 23.000 i 23 to to samo, to sugerowałbym się zapoznać z takimi terminami jak cyfry znaczące i dokładność obliczeń.
- Rejestracja: dni
- Ostatnio: dni
somekind napisał(a)
Skoro dla niektórych 23.000 i 23 to to samo
Dla Ciebie to nie jest to samo? Pytam jako matematyk.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
kij napisał(a)
Dla Ciebie to nie jest to samo? Pytam jako matematyk.
To tak jakbyś spytał czy dla mnie koń jest ssakiem.
- Rejestracja: dni
- Ostatnio: dni
somekind napisał(a)
kij napisał(a)
somekind napisał(a)
Dla Ciebie to nie jest to samo? Pytam jako matematyk.
Skoro dla niektórych 23.000 i 23 to to samo
To tak jakbyś spytał czy dla mnie koń jest ssakiem.
To jest raczej pytanie z rodzaju „czy struś jest dinozaurem?”
I tak i nie, zależy od definicji dinozaura.
23.000 i 23 matematycznie to to samo (ściślej: tyle samo). W językach programowania może być różnie, np. porówania może zwracać prawdę, ale bezpośrednie przypisanie niekoniecznie musi się udać.
- Rejestracja: dni
- Ostatnio: dni
23 i 23.000 to nie to samo.
Zdanie "Indyk waży 23 kG." oznacza, że waga indyka jest między 22.5 a 23.5
Zdanie "Indyk waży 23.000 kG." oznacza, że waga indyka jest między 22.995 a 23.005.
- Rejestracja: dni
- Ostatnio: dni
Zdanie "Indyk waży 23 kG." oznacza, że waga indyka jest między 22.5 a 23.5
Ja się tam nie znam na definicjach matematycznych, ale dla mnie zdanie "Indyk waży 23 kG." oznacza że waga indyka wynosi 23 kG.
@Azarien - może ale nie musi:
(equal 2.0 2)
NIL
(CL) Wszystko zależy od sposobu porównania.
- Rejestracja: dni
- Ostatnio: dni
Nie istnieje na świecie indyk, którego waga wynosi 23 kG. Poprzednie zdanie pozostaje prawdziwe po zamianie liczby 23 na jakąkolwiek inną.
- Rejestracja: dni
- Ostatnio: dni
bogdans napisał(a)
Nie istnieje na świecie indyk, którego waga wynosi 23 kG. Poprzednie zdanie pozostaje prawdziwe po zamianie liczby 23 na jakąkolwiek inną.
Tym bardziej jak piszecie kG, a nie kg:
http://pl.wikipedia.org/wiki/Kilogram-si%C5%82a
- Rejestracja: dni
- Ostatnio: dni
bogdans napisał(a)
Nie istnieje na świecie indyk, którego waga wynosi 23 kG. Poprzednie zdanie pozostaje prawdziwe po zamianie liczby 23 na jakąkolwiek inną.
Tym bardziej jak piszecie kG, a nie kg:
http://pl.wikipedia.org/wiki/Kilogram-si%C5%82a
- Rejestracja: dni
- Ostatnio: dni
bogdans napisał(a)
Nie istnieje na świecie indyk, którego waga wynosi 23 kG. Poprzednie zdanie pozostaje prawdziwe po zamianie liczby 23 na jakąkolwiek inną.
Tym bardziej jak piszecie kG, a nie kg:
http://pl.wikipedia.org/wiki/Kilogram-si%C5%82a
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
A czy 23.000 * 41.874 to to samo co 23 * 41.874?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 260
Ty pisałeś nie o masie, tylko o sile ziemskiego przyciągania -,-. Sorka, ale na Ziemii Masa == Waga!
PS. Ja kupuje 1 kg owoców, nie 10 niutonów.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
Ja jednak myślę, że @bo jasno się wyraził, od początku pisał o wadze.
Liczba cyfr po przecinku też ma w realnym świecie znaczenie, bo określa dokładność (czy raczej niedokładność) pomiaru. Więc to, czy te zera można zignorować czy nie, zależy od kontekstu, a nie od tego, że "matematycznie to jest to samo".
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: XML Hills
Wracając do postu kija:
Jeżeli chodzi o standard liczb zmiennoprzecinkowych IEEE to:
a + (b + c) != (a + b) + c
a / b * b != a
0 != -0 (tak, są dodatnie i ujemne zera)
itd
Jak widać jest to nieco sprzeczne z matematyką i trzeba to uwzględnić przy projektowaniu języków programowania, kompilatorów jak i samych programów.
Edit:
Fakt, MSM, masz rację, w sumie błędnie założyłem, że floaty są porównywane tymi samymi funkcjami co inty.
#include <cstdlib>
#include <iostream>
int main(int argc, char** argv) {
float zero = 0.f;
u_int32_t temp = *reinterpret_cast<u_int32_t*>(&zero) ^ 0x80000000;
float minusZero = *reinterpret_cast<float*>(&temp);
std::cout << zero << " " << minusZero << " " << (zero == minusZero);
return EXIT_SUCCESS;
}
U mnie ten kod normalnie działa, na ideone.com wywala jakieś niezrozumiałe warningi (chodzi o jakieś wyrównywanie, ale gdzie tu złe wyrównanie?).