Я пытаюсь закодировать свою функцию printf(). Я хотел напечатать значения float/double. Это то, что мне удалось сделать до сих пор.Печать плавающего без использования printf() в c
static void ft_float(va_list *ap, t_flag *flags)
{
double myfloat;
signed long int decipart;
signed long int intpart;
myfloat = va_arg(*ap, double);
if (myfloat < 0)
{
ft_myputchar('-');
myfloat *= -1;
}
intpart = (signed long int)myfloat;
ft_putnbr(intpart);
ft_myputchar('.');
myfloat -= intpart;
myfloat *= 1000000; //upto 6 decimal points
decipart = (signed long int)(myfloat + 0.5); //+0.5 to round of the value
ft_putnbr(decipart);
}
Как вы можете видеть, по понятным причинам код работает хорошо для поплавков как 1.424352, 12313.1341414 и т.д. Но не тогда, когда значение после запятой меньше 1, например, 1.004243, 12313.0001341 и т.д.
Что вы хотите сказать? – fuz
Правильное преобразование чисел с плавающей точкой в строки [трудно] (http://www.cs.indiana.edu/~dyb/pubs/FP-Printing-PLDI96.pdf). Кроме того, что «не работает»? Расскажите, пожалуйста, что происходит. «Это не работает» не является описанием ошибки. – fuz
Нет ли более простого способа их конвертировать? – mac42