Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ - Problem z dzieleniem

Ostatnio zmodyfikowano 2015-01-14 17:26
Autor Wiadomość
Fletcher
Temat założony przez niniejszego użytkownika
C++ - Problem z dzieleniem
» 2015-01-13 00:20:08
Witam mam następujący problem

double up = 0;
up = (100 / 10);

zwraca 10;

double up = 0;
up = (10 / 100);

zwraca 0, pytanie dlaczego :O?

//edit dodam ze jak zrobie cos takiego to dziala normalnie up = (10.0 / 100.0);

IDE Visual Studio 2014
P-124784
stryku
» 2015-01-13 06:56:16
Bo w dwóch pierwszych przypadkach robisz:
1. dzielisz int przez int --> wychodzi int czyli liczba całkowita
2. przypisujesz to do double. Już bez ułamka

A w tym z kropkami
1. dzielisz double przez double ----> wychodzi double czyli normalnie z ułamkiem
2. przypisujesz do zmiennej. Znów z ułamkiem
P-124790
Chlorek
» 2015-01-14 15:02:28
Jak kolega wcześniej napisał, dokładnie na tym polega problem. Sytuacja wygląda tak: każda liczba całkowita wpisana w programie będzie typu int, gdy chcesz uzyskać liczbę zmiennoprzecinkową wystarczy dodać na końcu kropkę:
C/C++
10 //traktowane jako int
10.//traktowane jako double

Można też określić jakiego dokładnie typu ma być ta liczba poprzez suffixy:
C/C++
10.//jako double
10.f //jako float
10.5 //jako double
10.5f //jako float
10.5d //jako double, choć domyślnie tak jest gdy wpisujesz zmiennoprzecinkową
P-124896
Nitr0Skay
» 2015-01-14 16:05:43
Czy tak nie było czasem w czystym i klasycznym C ?? Te Suffixy (tak to się nazywa ?) odgrywają jeszcze w ogóle jakąś znaczącą rolę w programowaniu czy webmasterce w dzisiejszych czasach ??
P-124903
Chlorek
» 2015-01-14 16:17:52
C i C++ są sobie bliskie, niemal wszystko jest takie samo, odpowiadając na pytanie: tak właśnie też było. Co do nazewnictwa - suffix, to po prostu dodatek na końcu czegoś tak jak PREfix jest na początku. Po angielsku oryginalnie jest to chyba numeric literal operator. Nie jestem pewien ale chyba od C++11 można pisać własne, nigdy jednak nie potrzebowałem tego mechanizmu. Co do roli to jak sam widzisz, lepsze to niż pisanie (float)10 , a ponad to zobacz jak ciekawe możliwości to daje gdy możesz napisać taki własny operator.
P-124906
Nitr0Skay
» 2015-01-14 17:26:13
Dziękuję za informacje :)
P-124912
« 1 »
  Strona 1 z 1