I'm trying to calculate E12 resistor series myself.

Above is an illustration of the idea where such equation can be written:

x = r3 + r3 * %tol = r4 – r4 * %tol

form that we can derive:

r4 = r3* [(1 + %tol)/(1 – %tol)]

hence in generalized form we can write (%tol = 0.1 for E12 series);

r(i+1) = ri* [(1 + %tol)/(1 – %tol)]

But when I iterate the above formula in a for loop I obtain the following results for the first resistor values:

1.0000 1.2222 1.4938 1.8258 2.2315 2.7274 3.3335 4.0743 4.9797 6.0863 7.4388

Then I take [(1 + %tol)/(1 – %tol)] = 1.2 rounded value instead of 1.222222 and write the formula as:

r(i+1) = r(i)*1.2

But again when I iterate the above formula in a for loop I obtain the following results for the first resistor values:

1.0000 1.2000 1.4400 1.7280 2.0736 2.4883 2.9860 3.5832 4.2998 5.1598 6.1917

But the real values for E12 should be as:

1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8

What am I doing wrong here?

## Best Answer

The general formula for one decade of all Exx resistor series (xx = 3*2^m, for m = 0 to 6)

Rn ~ 10^(n/xx) for n from 0 to xx-1

As you will realise, ~ means approximately equal, and not even always correctly rounded! The general intention was to get all the resistors into a nice geometrical series, and then adjust the numbers to some nice, low number of significant digits, and have successive series to be sub/supersets of each other to improve stock logistics. Unfortunately this means that the resulting numbers can be quite unequally spaced. The most irritating (to me) place that this happens is in the E24 series, where part of the sequence runs 1.3, 1.5, 1.6, 1.8.

As the series become finer, the number of significant figures increases, which means that not all series are sub/super the next one.

E3, E6, E12 are all subsets of E24, which use two significant figures. E48 and E96 are subsets of E192, which use three.

While finer series tend to have smaller tolerances, the tolerance is really an economic thing, you pay for as much as you need.