MCPcopy Create free account
hub / github.com/apache/fory / exactFloat

Function exactFloat

javascript/packages/core/lib/compatible/scalar.ts:468–495  ·  view source on GitHub ↗
(value: DecimalParts, localTypeId: number)

Source from the content-addressed store, hash-verified

466}
467
468function exactFloat(value: DecimalParts, localTypeId: number): number {
469 let candidate = partsToNumber(value);
470 if (!Number.isFinite(candidate)) {
471 throw new Error(
472 "Scalar value is not exactly representable as a finite float.",
473 );
474 }
475 switch (canonicalScalarTypeId(localTypeId)) {
476 case TypeId.FLOAT16:
477 candidate = fromFloat16Bits(toFloat16Bits(candidate));
478 break;
479 case TypeId.BFLOAT16:
480 candidate = fromBFloat16Bits(toBFloat16Bits(candidate));
481 break;
482 case TypeId.FLOAT32:
483 float32Array[0] = candidate;
484 candidate = float32Array[0];
485 break;
486 default:
487 break;
488 }
489 if (!partsEqual(value, floatToParts(candidate))) {
490 throw new Error(
491 "Scalar value is not exactly representable by the target float type.",
492 );
493 }
494 return candidate;
495}
496
497function rangeCheckedInteger(
498 value: number | bigint,

Callers 13

floatToFloatFunction · 0.85
integerToFloat16Method · 0.85
integerToBfloat16Method · 0.85
integerToFloat32Method · 0.85
integerToFloat64Method · 0.85
decimalToFloat16Method · 0.85
decimalToBfloat16Method · 0.85
decimalToFloat32Method · 0.85
decimalToFloat64Method · 0.85
stringToFloat16Method · 0.85
stringToBfloat16Method · 0.85
stringToFloat32Method · 0.85

Calls 9

fromFloat16BitsFunction · 0.90
toFloat16BitsFunction · 0.90
fromBFloat16BitsFunction · 0.90
toBFloat16BitsFunction · 0.90
partsToNumberFunction · 0.85
partsEqualFunction · 0.85
floatToPartsFunction · 0.85
canonicalScalarTypeIdFunction · 0.70
isFiniteMethod · 0.45

Tested by

no test coverage detected