Problem z wyciągnięciem pierwszej liczby po przecinku
Ostatnio zmodyfikowano 2013-11-01 15:56
Nekronomik Temat założony przez niniejszego użytkownika |
Problem z wyciągnięciem pierwszej liczby po przecinku » 2013-10-30 21:20:10 Witam, mam na przykład zmienną double a=0.4 i żeby wyciągnąć z niej 4 robię tak: int(a*10.0)%10 i otrzymuje 4, ale jak a=1.4 to otrzymuję 3. |
|
pekfos |
» 2013-10-30 21:22:54 Podaj kod. |
|
Nekronomik Temat założony przez niniejszego użytkownika |
» 2013-10-30 21:37:02 #include<iostream> #include<conio.h> #include<ctime>
using namespace std;
int main() { double a = 1.4; cout << int( a * 10.0 ) % 10 << endl; getch(); } dużo to go nie ma. |
|
Wasilek |
» 2013-10-30 21:49:29 |
|
Mitu |
» 2013-10-31 00:17:46 Problem bierze się stąd, że float jest zapisywany jako iloczyn pewnej liczby i dwójki podniesionej do potęgi, dlatego niektóre wartości nie są możliwe do uzyskania i w programie istnieją ich przybliżenia, dla 14 musi być to coś minimalnie mniejszego, np. 13.999999982 (można sobie sprawdzić co dokładnie odpowiednim kalkulatorem), a przy konwersji do int "obcinamy" to co po przecinku, dlatego zostaje 13. |
|
Elaine |
» 2013-10-31 01:46:32 dla 14 musi być to coś minimalnie mniejszego, np. 13.999999982 |
14 da się przedstawić dokładnie jako 1.75*2^3. Problemem jest 1.4, nie 14. |
|
maly |
» 2013-10-31 07:39:00 double number = 123.456; double integer; double fraction = modf( number, & integer );
cout << int( fraction * 10.0 ) << endl; |
|
Nekronomik Temat założony przez niniejszego użytkownika |
» 2013-10-31 08:44:34 Jeśli double number = 123.456; to faktycznie wyciągnie mi 4 ale jeśli jest double number = 123.4; to już nie. A właśnie na tym mi zależy, |
|
« 1 » 2 |