typestar

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

  1. double es el tipo por defecto de un literal como 1.5.
  2. Por el redondeo, 0.1 + 0.2 no es exactamente 0.3.
  3. Compara contra una tolerancia en su lugar.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 5 de 7 en Variables y tipos; paso 5 de 35 en Fundamentos del lenguaje.

← Anterior Siguiente →