Arc Testing is nothing but branch testing. A Branch is the outcome of a decision. So branch coverage is a measure of outcomes of a branch. Determining the number of branches in a method is easy as a the output of a branch has usually two outcomes (True of False).
Branch testing focusses on executing each condition in a decision in order to test all possible outcomes at least once. Every branch (decision) taken each way, true and false. It helps in validating all the branches in the code making sure that no branch leads to abnormal behaviour of the application. More on Branch coverage is covered in Branch Testing chapter.
Decision Coverage=(Number of decision outcomes executed/Total number of decision outcomes)*100%