У меня есть интересное любопытство, как компьютер вычисляет число с плавающей запятой 0,1?
В альфа-версии wolfram запрос «0.1 to binary» получает двоичное число с плавающей запятой бесконечно.
Но компилятор c ++ (xcode) вычисляет 0,1 точно.
Как это возможно?
Из-за округления вы можете получить от конечного двоичного представления до исходного десятичного числа. Если вы попытаетесь напечатать число с более высокой точностью, оно не будет точно равно 0,1. Рабочий пример:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
float f = 0.1f;
cout << f << endl;
cout << setprecision(10) << f << endl;
}
Других решений пока нет …