Skocz do zawartości
Pjetal

Liczby rzecz. a całkowite w C++

Rekomendowane odpowiedzi

Czy ktoś może wie jak najłatwiej w języku C++ z podanej liczby rzeczywsitej postaci xxx.xxx uzyskać część ułamką tzn. chodzi mi dokładnie o liczbę za przecinkiem czyli np. dla liczby 123.456 potrzebuję 456...jak to zrobić ??

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ja bym to zrobil tak..

np.

 

float rzeczywista = 123.456;

long calkowita = rzeczywista; //tutaj nastepuje niejawne rzutowanie na typ calkowity,czyli czesc ulamkowa jest obcinana

int czesc_ulamkowa = rzeczywista - calkowita;

 

nie mam akurat pod reka kompilatora, ale mysle ze jakos tak to powinno dzialac:)

 

pozdr.

Joohn

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja bym to zrobił tak ( ale druga liczba "ulamek" wyjdzie w przedziale od 0 do 1 ) :

 

#include <conio.h>

#include <iostream.h>

#include <math.h>

 

main()

{

double ulamek, calosc;    // zmienne do modf

double liczba = 123.456;  // liczba

 

ulamek = modf(liczba , &calosc);

 

cout <<  "liczba = " << liczba

    <<  "ncalosc = " << calosc

    <<  "nulamek = " << ulamek ;

 

getch();

}

 

int czesc_ulamkowa = rzeczywista - calkowita;

Twój kod działal by podobnie gdybyś zamiast int czesc_ulamkowa dał float czesc_ulamkowa.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Paranoik na egzaminie zrobiłem jak ty ale zrobiwszy tak po cout<< ci da 0.456 a po przerobieniu na int to jest równe 0 a nie 456 bo przerabia cala liczbe lacznie z zerem a ze zero jest calkowite to da 0 a nie to co jest po przecinku to nie takie proste

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Czy ktoś może wie jak najłatwiej w języku C++ z podanej liczby rzeczywsitej postaci xxx.xxx uzyskać część ułamką tzn. chodzi mi dokładnie o liczbę za przecinkiem czyli np. dla liczby 123.456 potrzebuję 456...jak to zrobić ??

Witam,

to zalezy czy masz tylko wyswietlic te trzy cyfry (prosto), czy ogolny przypadek (bardzo trudny,np. liczba 1.4353453452242344534).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Znalazłem jeszcze coś innego funkcję ecvt() która zmienia ułamek na na string i od razu zapisuje jako całość , trzeba skonwetować na liczbe, dokładność zamiany jest na sztywno. :x

W sumie to tylko mój wcześniejszy zmodyfikowany kod o ecvt().

 

#include<conio.h>#include<iostream.h>#include<math.h>#include<stdlib.h>main(){double ulamek, calosc; // zmienne do modfdouble liczba = 123.456; // liczbaint pozycja, znak;char * string;ulamek = modf(liczba , &calosc);cout << "liczba = " << liczba     << "ncalosc = " << calosc     << "nulamek = " << ulamek;string = ecvt(ulamek, 3 , &pozycja , &znak);   // zamienia double na stringcout << endl <<  "calosc z ulamka = " << string;getch();}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

słuchaj stary, to wszystko co wyżej napisane to szpaks bo chłopaki nie zrozumieli dokładnie o co Ci chodziło ale ja wiem..... hmmm.. jak zwykle zresztą, zaraz dam Tobie złoty środek yyyy rozwiązanie Twojego problemu, o to on:

 

float liczba,pom;

int calk,ulamk;

 

calk=(int)liczba;

pom=liczba-pom;

ulamk=0;

while (pom!=0) {

ulamk*=10;

pom*=10;

ulamk+=(int)pom;

pom-=(int)pom;

}

 

o to Ci chodziło? haha o to! bo chodziło przecież żeby przedstawić część ułakową w pastaci całkowitej prawda? no już dobrze Piotruś nie płacz, masz rozwiązanie i już możesz iść w dalszą drogę... tylko uważaj... na tej drodze jest jeszcze dużo niebezpieczeństw, którym trzeba (niestety) stawić czoła.... hmmm... nawet podniesionego czoła, będzie dobrze tylko już nie łykaj tych leków i dziel się jedzeniem z kolegami z akademika no i nie świruj.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ja bym to zrobil tak..

np.

 

float rzeczywista = 123.456;

long calkowita = rzeczywista; //tutaj nastepuje niejawne rzutowanie na typ calkowity,czyli czesc ulamkowa jest obcinana

int czesc_ulamkowa = rzeczywista - calkowita;

 

nie mam akurat pod reka kompilatora, ale mysle ze jakos tak to powinno dzialac:)

 

pozdr.

Joohn

bez sensu, dla wszystkich (prawie) przypadków będzie 0 (słownie: zero)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Człowieku 'magiczna-pało' niepotrzebna strata czasu z Twojej strony na wypisywanie tych bzdur. Skompilowałeś chociaż swój kod? Sprawdziłeś czy działa? To jest totalna bzdura! Po kilku poprawkach może coś by z tego było... Nie wiesz o co chodzi? O brak inicjalizacji zmiennych 'pało', o ile można się domyśleć, że liczba to nasza liczba, o tyle dalej jest już tylko gorzej... Wiem, że chodziło Ci o pomnożenie przez 10 przez co uzyskamy jedna cyfrę z ułamka ale coś Ci nie poszło... Nawet bardzo Ci nie poszło...

 

A co do liczb ujemnych to czy dla liczby -123.456 cześć ułamkowa przedstawiona w ten sposób jak chciał autor pytania to dla Ciebie -456?? Można i tak... Bo nie ma tego w założeniach [sarkazm].

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...