Написах програми, в които компютърът пита за плаваща точка не. От потребителя. Например, ако аз съм entring 0.41, изходът в printf е 0.409999999. Как да разрешите тази грешка?
Отговори:
1 за отговор № 1Това е просто. Употреба:
printf("%.2f", 0.409999999);
Това ще отпечата 0.41
1 за отговор № 2
- % f (отпечатайте като плаваща точка)
- % 4f (отпечатайте като плаваща точка с широчина най-малко 4 ширина)
- % .4f (отпечатайте като плаваща запетая с точност от четири знака след десетичната запетая)
- % 3.2f (отпечатайте като плаваща точка поне 3 широки и с точност 2)
0 за отговор № 3
Повечето от типовете данни с плаваща запетая са по технитеестество, неточно. Те се опитват да съхраняват реални числа (безкрайна прецизност) в ограничен прецизен бит-вектор. Като такъв, възможно е най-близкото представяне на 0.41 на вашата платформа да е 0.409999999.
Трябва да прочетете представата за плаваща запетая на IEEE754, за да получите представа какъв е проблемът, който ударихте там.