I think it has to do with Optical Margin Alignment. When Optical Margin Alignment is off, it aligns on the decimal properly when left-aligned, But when center-aligned or right-aligned, it does not.
But when Optical Margin Alignment is on, it aligns on the decimal properly only when center-aligned, not when left- or right-aligned.
So for aligning on right I don’t have a solution. But for center- or left-aligned, play around with the Optical Margin Alignment setting.
To turn on Optical Margin Alignment, select anywhere in the story, and go to Window > Type & Tables > Story to open the Story panel, and make sure Optical Margin Alignment is checked.
If you want to mix alignments in the story then you’ll have to do some work as Optical Margin Alignment affects the entire story, even the paragraphs that you want left-aligned. So to fix this, select the paragraphs that you want to left-align and not use Optical Margin Alignment, and from the Paragraph Panel’s flyout menu select Ignore Optical Margin. (Or even better yet, save it in a paragraph style. Its setting is found under the Indents and Spacing tab in the Paragraph Style Options dialog).