The formula of 2x amplification to dB is:
https://www.google.com/search?q=20*log10%282%29
It is an infinitely long fractional number, but for 32-bit float and below, you still need a value of 6.0206. Audacity's "Amplify" dialog only allows up to 4 digits of input, so it is not possible to perform an exact 2x scaling, at least for the version of Audacity I use.
It is possible via Nyquist command though. Select the audio track you want to amplify, then click Tools > Nyquist Prompt, enter the following then click OK:
return *track* * 2
It will perform an exact 2x scale. In order to prove this you can export the scaled file as 32-bit float, then re-import to Audacity, then use this command:
return *track* * .5
This will revert the file by using 0.5x scaling. You can use foo_bitcompare to check if the reverted file is identical to the original file or not. I've attached some files:
[original]: original file
double: double of [original]
half: half of [double]
+6dB: [original] + 6dB
-6dB: [+6dB] - 6dB
original vs half:
Comparing:
"E:\download\original.wav"
"E:\download\half.wav"
Compared 240000 samples.
No differences in decoded data found.
Channel peaks: 0.400000 (-7.96 dBTP)
original vs -6dB:
Comparing:
"E:\download\original.wav"
"E:\download\-6dB.wav"
Compared 240000 samples.
Differences found: 645 values, 0:00.011625 - 0:04.993813, peak: 0.000000 (-150.51 dBTP) at 0:00.030771, 1ch
Channel difference peaks: 0.000000 (-150.51 dBTP)
File #1 peaks: 0.400000 (-7.96 dBTP)
File #2 peaks: 0.400000 (-7.96 dBTP)
Detected offset as 0 samples.
In digital domain, an exact 2x scaling is lossless. For analog, depends on how your interface performs, it may have higher distortion when the signal is near maximum, or loses SNR when the signal is too weak, these analog noise and distortion will then converted to digital. So if there are measurable or even audible differences, the differences are not necessarily related to digital "resolution" at all.