That’s broken. Your locale uses comma as decimal separator and Val() expects a point. For Val() “5,9” and “5,1” are just 5.
You could try localStringNumber.ToDouble() instead.
Var d As Double = 5.91
Var ls As String = d.ToString(Locale.Current) // 5,91 if your country uses comma
Var n As Double = ls.ToDouble() // 5.91 back
Break