я хотел преобразовать двойной плавать в C, но хотел сохранить десятичную точку точно, насколько это возможно без каких-либо изменений ...C: преобразование двойной плавать, сохраняя десятичную Точность точки
, например, скажем, я have
double d = 0.1108;
double dd = 639728.170000;
double ddd = 345.2345678
теперь исправьте меня, если я ошибаюсь, я знаю, что точность с плавающей запятой составляет около 5 чисел после точки. могу ли я получить эти пять чисел после точки точно так же, как у двойника? так что приведенные выше результаты следующим образом:
float f = x(d);
float ff = x(dd);
float fff = x(ddd);
printf("%f\n%f\n%f\n", f, ff, fff);
он должен напечатать
0.1108
639728.17000
345.23456
все цифры после предела точности (которые я считать, как 5) будет усечена.
с плавающей точкой точность более точно указана как «число значащих цифр», а не «номер цифр после запятой ». 12345678.12345, скорее всего, не будет точно отображаться с помощью поплавка. –
Помимо недоразумений относительно представления чисел с плавающей запятой, которые были прокомментированы и ответили, функция 'x', которую вы ищете, - это бросок из double в float' (float) '. Если вы не изменили режим округления по умолчанию по умолчанию, то этот лимит вычисляет 'float', который ближе всего к' double', который вы конвертируете. Нет лучшего преобразования, чем этот, поэтому, если он потеряет слишком много точности для вашего вкуса, держите свои «двойники» такими, какие они есть. –
Усечение - это не самый точный способ их преобразования - 345.2345678 находится ближе к 345.23457, чем к 345.23456 – caf