Units: added support to handle negative fractional numbers. (#28849)

This commit is contained in:
Marcus Andersson 2020-11-05 10:40:52 +01:00 committed by GitHub
parent e54fc47462
commit abe96f4f89
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 2 deletions

View File

@ -1,4 +1,4 @@
import { getDisplayProcessor, getRawDisplayProcessor } from './displayProcessor';
import { getDecimalsForValue, getDisplayProcessor, getRawDisplayProcessor } from './displayProcessor';
import { DisplayProcessor, DisplayValue } from '../types/displayValue';
import { MappingType, ValueMapping } from '../types/valueMapping';
import { FieldConfig, FieldType, ThresholdsMode } from '../types';
@ -329,3 +329,21 @@ describe('getRawDisplayProcessor', () => {
expect(result).toEqual({ text: expected, numeric: null });
});
});
describe('getDecimalsForValue', () => {
it.each`
value | expected
${0} | ${0}
${13.37} | ${0}
${-13.37} | ${0}
${12679.3712345811212} | ${0}
${-12679.3712345811212} | ${0}
${0.3712345} | ${2}
${-0.37123458} | ${2}
${-0.04671994403853774} | ${3}
${0.04671994403853774} | ${3}
`('should return correct suggested decimal count', ({ value, expected }) => {
const result = getDecimalsForValue(value);
expect(result.decimals).toEqual(expected);
});
});

View File

@ -143,7 +143,7 @@ export function getDecimalsForValue(value: number, decimalOverride?: DecimalCoun
return { decimals: decimalOverride, scaledDecimals: null };
}
let dec = -Math.floor(Math.log(value) / Math.LN10) + 1;
let dec = -Math.floor(Math.log(Math.abs(value)) / Math.LN10) + 1;
const magn = Math.pow(10, -dec);
const norm = value / magn; // norm is between 1.0 and 10.0
let size;