Wypisanie części ułamkowej jako liczby całkowitej

0

Witam. Mam problem z następującym zagadnieniem. Muszę wczytywać liczby typu double ktore odpowiadaja wspolrzednym pewnego wektora. Nastepnie mam dokonać normalizacji wektora, czyli podzielić każdą współrzędną tego wektora przez jego dlugosc.
Dlatego potrzebuje np liczbe 3.52 zapisać jako dwie liczby int : 3 i 52. 3 mogę uzyskać łatwo rzutując double na int. A ma ktoś pomysł jak z cześci ułamkowej zrobić liczbę całkowitą?

0

jaka dlugosc po przecinku?

dla 2 pomnoz przez 100 i zrob pozniej modulo ze 100. liczba zer odpowiada dokladnosci

0

O to chodzi, że to użytkownik ma wczytywać te liczby :(
Może wczytać np 3.5 albo też 456.789. Może podać długość po przecinku jaką chce.

0

Jeżeli użytkownik to wpisuje to możesz wczytać to jako string, podzielić go na dwie części (ta przed przecinkiem i po przecinku), używając np takiej funkcji:

#include <iostream>
#include <vector>
#include <sstream>

using namespace std;

std::vector<std::string> splitString(const std::string &string, char delim)
{
    std::vector<std::string> elems;
    std::stringstream ss;
    std::string item;

    ss.str(string);
    while (std::getline(ss, item, delim)) elems.push_back(item);

    return elems;
}

int main()
{    
    std::string liczba = "325.543";
    std::vector<std::string> liczby = splitString(liczba, '.');
    std::cout << liczby[0] << "   " << liczby[1] << "\n";
    return 0;
}

i za pomocą stringstream przekonwertować te dwa napisy na inty.

Edit: ale pewnie znajdą się prostsze sposoby, może c++ ma jakieś funkcje do rozbijania liczb na część rzeczywistą i ułamkową, np: http://cpp0x.pl/dokumentacja/standard-C/modf/575.

0

Dziękuję wszystkim za pomoc ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1