Function
roundValue
(
v: number,
scale: number,
forceCeil: boolean,
forceFloor: boolean,
)
Source from the content-addressed store, hash-verified
| 2481 | } |
| 2482 | |
| 2483 | function roundValue( |
| 2484 | v: number, |
| 2485 | scale: number, |
| 2486 | forceCeil: boolean, |
| 2487 | forceFloor: boolean, |
| 2488 | ): number { |
| 2489 | let scaled = v * scale |
| 2490 | let frac = scaled - Math.floor(scaled) |
| 2491 | if (frac < 0) frac += 1 |
| 2492 | // Float-epsilon tolerance matches upstream YGDoubleEqual (1e-4) |
| 2493 | if (frac < 0.0001) { |
| 2494 | scaled = Math.floor(scaled) |
| 2495 | } else if (frac > 0.9999) { |
| 2496 | scaled = Math.ceil(scaled) |
| 2497 | } else if (forceCeil) { |
| 2498 | scaled = Math.ceil(scaled) |
| 2499 | } else if (forceFloor) { |
| 2500 | scaled = Math.floor(scaled) |
| 2501 | } else { |
| 2502 | // Round half-up (>= 0.5 goes up), per upstream |
| 2503 | scaled = Math.floor(scaled) + (frac >= 0.4999 ? 1 : 0) |
| 2504 | } |
| 2505 | return scaled / scale |
| 2506 | } |
| 2507 | |
| 2508 | // -- |
| 2509 | // Helpers |
Tested by
no test coverage detected