Saltar al contenido

¿Cuál es el uso del sufijo `f` en el valor flotante?

Solución:

3.00 se interpreta como un double, Opuesto a 3.00f que es visto por el compilador como un float.

los f sufijo simplemente le dice al compilador cuál es un float y que es un double.

Ver MSDN (C ++)

Además de lo que ya se ha dicho, hacer un seguimiento de 1.0 frente a 1.0f es más importante de lo que muchas personas creen. Si escribe un código como este:

float x;
...
float y = x * 2.0;

Entonces x se promoverá a un doble, porque 2.0 es un doble. El compilador no puede optimizar esa promoción o violaría el estándar C. El cálculo se realiza con doble precisión y, a continuación, el resultado se trunca implícitamente en un flotante. Esto significa que el cálculo será más lento (aunque más preciso) de lo que hubiera sido si hubiera escrito 2.0fo 2.

Si hubiera escrito 2, la constante sería de tipo int, que se promovería a flotante, y el cálculo se habría realizado con “precisión flotante”. Un buen compilador le advertirá sobre esta promoción.

Lea más sobre las reglas de “conversión aritmética habitual” aquí:

http://msdn.microsoft.com/en-us/library/3t4w2bkb%28v=vs.80%29.aspx

Porque los literales de punto flotante sin sufijo son dobles, y el redondeo significa que incluso los literales pequeños pueden tomar diferentes valores cuando se redondean a flotante y doble. Esto se puede observar en el siguiente ejemplo:

float f=0.67;
if(f == 0.67) 
  printf("yes");
else 
  printf("no");  

Esto saldrá no, porque 0.67 tiene un valor diferente cuando se redondea para flotar que cuando se redondea al doble. Por otra parte:

float f=0.67;
if(f == 0.67f) 
  printf("yes");
else 
  printf("no"); 

salidas yes.

El sufijo se puede especificar con letras mayúsculas o minúsculas.

Prueba esto también:

printf(" %u %un", sizeof(.67f), sizeof(.67));

Compruebe @codepade

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *