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

Problem z wyciągnięciem pierwszej liczby po przecinku

Ostatnio zmodyfikowano 2013-11-01 15:56
Autor Wiadomość
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.
P-94897
pekfos
» 2013-10-30 21:22:54
Podaj kod.
P-94899
Nekronomik
Temat założony przez niniejszego użytkownika
» 2013-10-30 21:37:02
C/C++
#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.
P-94904
Wasilek
» 2013-10-30 21:49:29
Problem chyba identyczny jak mój http://cpp0x.pl/forum/temat/​?id=11569 Niestety nie znalazłem pomocy w związku z nim :<
P-94906
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.
P-94911
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.
P-94912
maly
» 2013-10-31 07:39:00
C/C++
double number = 123.456;
double integer;
double fraction = modf( number, & integer );

cout << int( fraction * 10.0 ) << endl;
P-94913
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,
P-94916
« 1 » 2
  Strona 1 z 2 Następna strona