получение дробной части от double и modf
От: needDrivers  
Дата: 11.11.09 09:10
Оценка:
Здравствуйте!

Понадобилось отделить дробную часть от числа (копейки отделить от рублей).
Подскажите, что я делаю не так?

На выходе надо получить два целых числа — рубли и копейки.
    char tmp[1024];
    double zz;
    double yy;
    int i;

        // извлекаю в переменную yy дробную часть от 3.03, умножаю её на 100 и кладу в yy
    yy = modf(3.03, &zz) * 100;            // здесь yy = 3
    sprintf(tmp, "%f", yy);                // tmp = "3.000000"
    MessageBox(NULL, tmp, "modf", MB_OK);

        // извлекаю из yy целую часть в zz
    modf(yy, &zz);                        // а вот здесь начинается мистика - zz почему-то равен 2 ???
    sprintf(tmp, "3 = %f", zz);
    MessageBox(NULL, tmp, "modf", MB_OK);

    i = (int) yy;
    sprintf(tmp, "3 = %d", kop);
    MessageBox(NULL, tmp, "modf", MB_OK);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.