Punto flotante en C
float, double y por qué nunca los comparas con igualdad.
#include <math.h>
#include <stdio.h>
int nearly(double a, double b, double tolerance) {
return fabs(a - b) < tolerance;
}
void floats(void) {
double sum = 0.1 + 0.2;
printf("%.20f\n", sum);
printf("equal: %d, nearly: %d\n", sum == 0.3, nearly(sum, 0.3, 1e-9));
float single = 1.0f / 3.0f;
printf("%.7f %.15f\n", single, sqrt(2.0));
printf("%.0f %.0f\n", floor(2.7), ceil(2.1));
}
Cómo funciona
doublees el tipo por defecto de un literal como1.5.- Por el redondeo,
0.1 + 0.2no es exactamente0.3. - Compara contra una tolerancia en su lugar.
Palabras clave y builtins usados aquí
doublefloatintreturnvoid
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 382
- Tokens
- 116
- Ritmo de tres estrellas
- 80 tpm
Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 87 segundos.
Paso 5 de 7 en Variables y tipos; paso 5 de 35 en Fundamentos del lenguaje.