-
Incident report
-
Resolution: Unresolved
-
Trivial
-
None
-
2.4.0
We'll need to re-implement our round-off algorithm used in latest data, overview and some other places. The current implementation seemed to have deviated from the original idea at some point. Here's a summary of how it works now, omitting some details:
If units are empty or unit is either %, ms, rpm or RPM
then:
If the modulus of the value is >= 0.01 (ZBX_UNITS_ROUNDOFF_THRESHOLD)
then:
round it off to 2 (ZBX_UNITS_ROUNDOFF_UPPER_LIMIT) numbers after the decimal point
else:
round it off to 6 (ZBX_UNITS_ROUNDOFF_LOWER_LIMIT) numbers
else
If the modulus of the value is >= 1 (hardcoded)
then:
convert it to some power and add the prefix (K, M, G etc)
round it off to 2 (ZBX_UNITS_ROUNDOFF_UPPER_LIMIT)
else:
round if off to 4 (ZBX_UNITS_ROUNDOFF_MIDDLE_LIMIT)
I'm not sure about the reasoning behind this algorithm, but I don't think we need two different ways of rounding values depending on their units.
I believe, the algorithm should be simple and look something like this:
If the modulus of the value is >= 0.01 (ZBX_UNITS_ROUNDOFF_THRESHOLD) then: round it off to 2 (ZBX_UNITS_ROUNDOFF_UPPER_LIMIT) numbers after the decimal point else: round it off to 6 (ZBX_UNITS_ROUNDOFF_LOWER_LIMIT) numbers
We should also consider making these constants configurable from the frontend.