Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > дробная часть числа -> строка, как ????


Автор: Волод 17.8.2005, 05:21
Не получается преобразовать дробную часть числа в строку

Привет всем!
Есть необходимость перевести float – число в символьную строку. С целой частью числа я справился, а вот на дробной застрял… Попытался применить вот такой алгоритм:
Пусть temp2-это дробная часть, str-это заполняемый массив, тогда
Код

for (int i=0; temp2!=0; i++)
{
    temp2=temp2*10;
    str[i]=((int)temp2)+'0';    
    if (temp2>=1)
        temp2=temp2- (int)temp2;
}


то есть я предполагал умножать дробную часть на 10 до тех пор, пока дробная часть не выродится. Но такой алгоритм для всех чисел не прокатывает. Например, если temp2 =0.125, все работает правильно. Но если я подставляю 0.235 – начинаются глюки (видимо из-за погрешности float-чисел) – при каждой интерации цикла при выполнении строки (temp2=temp2- (int)temp2) в temp2 в конец дробной части начинают добавляться дополнительные "левые" разряды, в результате чего вырождение дробной части не происходит – и программа прсто вылетает. А как еще можно выделить дробную часть числа? – может, можно по другому отбросить целую часть (без вычитания), или, например, получить количество разрядов дробной части

Автор: chaos 17.8.2005, 07:07
воспользуйся sprintf или _fcvt и не мучайся

Автор: xgm 17.8.2005, 10:15
лучше sprintf и fmod

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)