Новый 128-битный десятичный тип с плавающей запятой IEEE https://en.wikipedia.org/wiki/Decimal128_floating-point_format указывает, что мантисса может быть представлена одним из двух способов, либо как простое двоичное целое число, либо в плотно упакованном десятичном виде (в этом случае каждые десять бит представляют три десятичные цифры).
Тип decimal
в C # предшествует этому стандарту, но имеет ту же идею. Он шел с двоичным целочисленным значащим.
На первый взгляд это кажется неэффективным; для сложения и вычитания, чтобы выровнять значения, вам нужно разделить одно из них в степени десяти; а деление - самый затратный из всех арифметических операторов.
Что послужило причиной выбора? Какое соответствующее преимущество было сочтено оправданным этого штрафа?