The purpose of DecimalToIntegerArrayNormalization is to create a complex data structure called a DecimalZigguratKey. A DecimalZigguratKey is comprised of two parts a unbounded (in terms of bit size) (Big) integer that represents the integer part of the decimal number. This integer part is used as a key for a unbounded ZigguratIndex#1.3.6.1.4.1.33097.1.0.50. Then the decimal part of the decimal number is encoded as a list of integers of fixed sizes that will map to a series of nested / bounded Ziggurats#1.3.6.1.4.1.33097.1.0.50 which make up a single index. The nested / bounded Ziggurats#1.3.6.1.4.1.33097.1.0.50 that represent the decimal part of the decimal number will be nested under the unbounded Ziggurat#1.3.6.1.4.1.33097.1.0.50 that represents the integer part of the number. The DecimalZigguratKey includes both a ConsistantHashCode#1.3.6.1.4.1.33097.1.0.4.3 for the integer part of the number and a ConsistantHashCodeChain#1.3.6.1.4.1.33097.1.0.4.3 for the decimal part of the number.
DecimalToIntegerArrayNormalization is slightly trickier than StringToIntegerArrayNormalization#1.3.6.1.4.1.33097.5.3 this is because it is broken down into two parts.
The integer part of the decimal number is simply not turned into an array and is kept as an arbitrary large integer (in terms of bits needed). This is to map the integer to a unbounded ZigguratIndex#1.3.6.1.4.1.33097.1.0.50.
The decimal part of the decimal number needs to be split into an array of integers. This process is similar to StringToIntegerArrayNormalization#1.3.6.1.4.1.33097.5.3.
b This is the number of bits in the decimal part of the decimal number. Note: As bits go from right to left from the decimal point they represent halves (i.e. 0.5, 0.25, 0.125, etc).
i This is the number of bits in the integers in the integer array that will represent the decimal part of the decimal number.
a : a represents the number of slots in the Array.
This can be accomplished with this formula 1 + b/i = a
Convert the bits that evenly divide into i into integers and put them in the array working left to right from the decimal and in the array (assuming 0 is the slot at the left).
Add zero bits to the right of the remainder bits, convert the aggregate to a integer.