My first guess is that the values may contain non-numeric data.
Try this
double sum = 0;
for (int i=0 ; i < dataGridView1.Rows.Count; ++i)
{
double value = 0.0;
if (double.TryParse(dataGridView1.Rows[i].Cells[3].Value.ToString(), out value))
{
sum += value;
}
}
MessageBox.Show(sum.ToString());