Tipos numéricos en Delphi
Un observatorio cuenta fotogramas, suma bytes y mide una exposición en segundos.
program NumbersTypes;
uses SysUtils;
var
Frames: Integer;
TotalBytes: Int64;
Exposure: Double;
LongEnough: Boolean;
begin
Frames := 1440;
TotalBytes := Int64(Frames) * 3000000; // widen before multiplying
Exposure := 7 / 2; // / always yields a Double
LongEnough := Exposure > 3;
WriteLn(Format('frames %d, bytes %d', [Frames, TotalBytes]));
WriteLn(Format('7 div 2 = %d, 7 / 2 = %.1f', [7 div 2, Exposure]));
// Round picks the nearest whole number, Trunc drops the fraction.
WriteLn(Format('round %d, trunc %d', [Round(Exposure), Trunc(Exposure)]));
WriteLn('long enough: ', LongEnough);
end.
Cómo funciona
Int64(Frames) * 3000000amplía el tipo primero, así que el producto no desbordaInteger.7 div 2da 3, mientras que7 / 2produce elDouble3.5.Round(Exposure)devuelve 4 yTrunc(Exposure)descarta la fracción.
Palabras clave y builtins usados aquí
BooleanDoubleFormatInt64IntegerRoundTruncWriteLnbegindivendprogramusesvar
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 617
- Tokens
- 116
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 93 segundos.
Paso 1 de 3 en Tipos y cadenas; paso 4 de 27 en Fundamentos del lenguaje.