Arduino ADC is 10 bit. There's too much electrical noise flying around on the die of a microcontroller to get much better accuracy than that - a separate dedicated chip is needed to get high performance such as 16/20/24 bits. There's a bewildering variety of ADC and DAC chips to choose from - some go for accuracy, some for speed, some for low power.