The "extra" digits that look incorrect to you are simply the result of doing an exact conversion of the actual floating point binary bit pattern that is stored to decimal. They are meaningful in that sense. But the values are only significant to about 16 decimal digits. E.g.,
fprintf('\n58digits\t%60.58f\n',a-eps(a))
58digits 0.1666666666666666296592325124947819858789443969726562500000
fprintf('\n58digits\t%60.58f\n',a)
58digits 0.1666666666666666574148081281236954964697360992431640625000
fprintf('\n58digits\t%60.58f\n',a+eps(a))
58digits 0.1666666666666666851703837437526090070605278015136718750000
The three numbers printed are all exact conversions, so the digits mean something in that sense. Those long decimal digits are the equivalent of what is actually stored internally for the number in binary. 1/6 cannot be represented exactly in IEEE double precision, so the closest number to it is picked for the internal representation and what is displayed with fprintf() is an exact conversion of that number. The two closest numbers to a that can be represented in IEEE double precision format are about 2.7756e-17 away from it. I.e., there is only about 16 decimal digits of precision in that number.
Some numbers can be represented exactly, e.g.,
fprintf('\n58digits\t%60.58f\n',1/8)
58digits 0.1250000000000000000000000000000000000000000000000000000000
But others cannot, such as 1/6.
CAVEAT: Windows MATLAB R2017a and earlier used a different background library for fprintf( ) and related functions. In those versions, you would not get these extra exact conversion digits printed. It is only on later Windows MATLAB versions that use an updated library where you get these digits printed. To my knowledge, the non-Windows MATLAB versions always used libraries that printed these digits. For these earlier Windows MATLAB versions, you would need to use a different function to get those digits, e.g.,