Aligning elements/text that do not share a parent without additional wrapping elements with specific widths is not achievable through text alignment alone.
No CSS method exists for this type of alignment.
table, th, td {
border: 1px solid black;
}
span {
display: inline-block;
width: 4ch;
text-align: right;
background: pink;
}
<table style="width:100%">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td><span>5</span></td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td><span>50</span></td>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td><span>-50</span></td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td><span>-4</span></td>
</tr>
</table>