I have exams in Machine Learning coming up and I need help answering this question.
There are a million identical fish in a lake, one of which has swallowed the One True Ring. You must get it back! After months of effort, you catch another random fish and pass your metal detector over it, and the detector beeps! It is the best metal detector money can buy, and has a very low error rate: it fails to beep when near the ring only one in a billion times, and it beeps incorrectly only one in ten thousand times. What is the probability that, at long last, you’ve found your precious ring?
This is my answer I worked out using Bayes rule:

Is this the right way to work out this type of question and is that somewhat the correct answer?
I think you have mixed up a few of your conditional probabilities. If the detector fails to beep over the ring only one in a billion times, then it does beep the rest of the billion times. Similarly, if it beeps over he wrong fish one in ten thousand times, then it doesn't beep on the rest of those ten thousand wrong fish. So you should have \begin{align} P(B|\tilde{A}) &= \frac{1}{10000}\\ P(\tilde{B}|\tilde{A}) &= \frac{9999}{10000}\\ P(\tilde{B}|A) &= \frac{1}{1000000000}\\ P(B|A) &= \frac{999999999}{1000000000} \end{align} which is different from what you do have. Using these values gives \begin{align} P(B) & =\frac{999999999}{1000000000}\frac{1}{1000000} +\frac{1}{10000}\frac{999999}{1000000} \\ & =\frac{999999999}{1,\!000,\!000,\!000,\!000,\!000} +\frac{999999}{10,\!000,\!000,\!000} \\ & = \frac{100,\!999,\!899,\!999}{1,\!000,\!000,\!000,\!000,\!000} \end{align} and \begin{align} P(A|B) & = \frac{\frac{999999999}{1000000000}\frac{1}{1000000}} {\frac{100999899999}{1000000000000000}} \\ & = \frac{999,\!999,\!999}{1,\!000,\!000,\!000,\!000,\!000} \frac{1,\!000,\!000,\!000,\!000,\!000}{100,\!999,\!899,\!999} \\ & = \frac{999,\!999,\!999}{100,\!999,\!899,\!999}\approx 0.0099 \end{align} Or slightly less than $1$%. To check, we can make a quick estimate of the answer. There are almost one million fish that don't have the ring. The detector gives a false positive one in ten thousand times. So, if you were to test every fish in the lake, you would get approximately $100$ beeps. Of all the fish that trigger beeps, only one has the ring, which means that the detector would only be right about once in every hundred beeps, or $1$% of the time.
In regards to the other part of your question, yes, your methods were correct. It was just your starting values that were wrong.