function f64
f64(endianness?: Endianness): Coder<number>

Creates a coder for 64-bit floating-point numbers.

This function creates a coder that can encode/decode 64-bit floating-point numbers (double-precision IEEE 754 format). The endianness parameter determines the byte order used.

Examples

Example 1

import { assertEquals } from "@std/assert";
import { f64 } from "@hertzg/binstruct/numeric";

// Create big-endian and little-endian coders
const f64be = f64("be");
const f64le = f64("le");

// Test data
const testValue = 3.14159265359;

// Encode and decode with big-endian
const bufferBE = new Uint8Array(8);
const bytesWrittenBE = f64be.encode(testValue, bufferBE);
const [decodedBE, bytesReadBE] = f64be.decode(bufferBE);

// Use approximate comparison for floating-point precision
assertEquals(Math.abs(decodedBE - testValue) < 0.0000001, true);
assertEquals(bytesWrittenBE, 8);
assertEquals(bytesReadBE, 8);

// Encode and decode with little-endian
const bufferLE = new Uint8Array(8);
const bytesWrittenLE = f64le.encode(testValue, bufferLE);
const [decodedLE, bytesReadLE] = f64le.decode(bufferLE);

// Use approximate comparison for floating-point precision
assertEquals(Math.abs(decodedLE - testValue) < 0.0000001, true);
assertEquals(bytesWrittenLE, 8);
assertEquals(bytesReadLE, 8);

Parameters

optional
endianness: Endianness = be

The byte order to use ("be" for big-endian, "le" for little-endian), defaults to "be"

Return Type

Coder<number>

A Coder<number> for 64-bit floating-point numbers

Usage

import { f64 } from "numeric/numeric.ts";