diff --git a/jsroot/types/fundamental/README.md b/jsroot/types/fundamental/README.md index dc98213..9c1e5c3 100644 --- a/jsroot/types/fundamental/README.md +++ b/jsroot/types/fundamental/README.md @@ -5,6 +5,3 @@ * [`real`](real): `Real{16,32,64}`, `SplitReal{32,64}` * [`real32trunc`](real32trunc): `Real32Trunc` * [`real32quant`](real32quant): `Real32Quant` - -Note: -- the columns of `real32quant` are more precise in JSROOT, since JavaScript natively supports double-precision floats diff --git a/jsroot/types/fundamental/real32quant/read.mjs b/jsroot/types/fundamental/real32quant/read.mjs index 74bee6b..0d23ad9 100644 --- a/jsroot/types/fundamental/real32quant/read.mjs +++ b/jsroot/types/fundamental/real32quant/read.mjs @@ -1,5 +1,14 @@ import { read, floatToHex } from "../../../jsroot_reader.mjs"; +function formatFloat(num, { field }) { + // round num to single-precision float to match the required field precision + if (field.startsWith("Float")) { + num = Math.fround(num); + } + + return floatToHex(num); +} + const fields = [ "FloatReal32Quant1", "FloatReal32Quant8", @@ -12,4 +21,4 @@ const fields = [ const [input = "types.fundamental.real32quant.root", output = "types.fundamental.real32quant.json"] = process.argv.slice(2); -read(input, output, fields, floatToHex); +read(input, output, fields, formatFloat);