que quería convertir el doble de flotar en C, pero quería conservar el punto decimal exactamente como sea posible sin ningún cambio ...C: convertir el doble de flotar, preservando punto de precisión decimal
por ejemplo, digamos que tener
double d = 0.1108;
double dd = 639728.170000;
double ddd = 345.2345678
ahora corrígeme si estoy equivocado, sé que la precisión del punto flotante es de aproximadamente 5 números después del punto. ¿Puedo obtener esos cinco números después del punto exactamente como lo tenía el doble? de modo que los resultados anteriores como sigue:
float f = x(d);
float ff = x(dd);
float fff = x(ddd);
printf("%f\n%f\n%f\n", f, ff, fff);
debe imprimir
0.1108
639728.17000
345.23456
todos los dígitos después del límite de precisión (que supongo como 5) podrían truncarse.
Precisión de punto flotante se afirma con más precisión como 'número de dígitos significativos' en lugar de 'serie de dígitos después del lugar decimal '. 12345678.12345 lo más probable es que no sea representable de forma particularmente precisa mediante un flotador. –
Aparte del malentendido con respecto a la representación de los números de punto flotante que se han comentado y respondido, la función 'x' que está buscando es el molde de doble a flotar' (float) '. Si no cambió el modo de redondeo de su valor predeterminado de "más cercano", esta conversión calcula el 'flotante 'que está más cerca del' doble' que está convirtiendo. No hay mejor conversión que esta, por lo que si esta pierde demasiada precisión para su gusto, mantenga sus "dobles" tal como están. –
El truncamiento no es la forma más precisa de convertirlos: 345.2345678 está más cerca de 345.23457 que de 345.23456 – caf