Мне было поручено воссоздать printf в C, не используя внешние библиотеки. Я пытаюсь реализовать функциональность% f с точностью до 6 знаков после запятой. Поэтому в основном, если я передаю 15.2554 в функцию printf, «15.255400» должен быть напечатан. Вместо этого напечатано «15.255399». Мой код, чтобы найти знаков после запятой реализован как таковой:Ошибка округления при преобразовании Double to Char
print_function(double input){
int i = 0;
int temp;
double temp_dub;
char temp_char;
temp = (int)input;
temp_dub = input - temp;
while (i < 6){
temp_dub = temp_dub * 10;
temp = (int) temp_dub;
temp_char = (char) (temp+48)
write(1,&temp_char,1);
i++;
temp_dub -= (int) temp_dub;
}
return;
}
Может кто-нибудь пожалуйста, осветить меня, почему я не могу получить конечные нули и вместо того, чтобы это число чуть ниже моего входа 15.554?
'C' и' C++ '** разные ** языки. Один тег явно не нужен. – Ari0nhh
В вашей функции отображается мусор для 15.554. Убедитесь, что вы разместили правильный фрагмент кода. – DyZ
Этот код может работать на C или C++, если я не ошибаюсь. – Heisenberg