Assuming you KNOW that you started with an integer . . .
double a = System.Math.Round(1580/11.0, 4);
double Delta = 0.00001;
int b = (int)(System.Math.Floor((a * 11.0) + Delta));
In other words, do your multiplication by 11 - it won't come out as an exact integer (floating point arithmetic rarely does) - add a small amount to make sure you are just over, not just under, an integer - and take Floor to get next lower integer.
[sorry, this is C# but the functions / techniques are the same in VB, just change the syntax]
If you didn't start with an integer, you need to know how many decimal places you had - and scale values accordingly - so if 3dp (e.g. 1580.123) do:
double a = System.Math.Round(1580.123/11.0, 4);
double Delta = 0.00001;
double b = System.Math.Floor((a * 1000 * 11.0) + Delta) / 1000;
If you've rounded your intermediate result to 4dp but know you started with a value that wasn't necessarily integral and may have had up to 8 valid dp, you CAN'T, even theoretically, retrieve the original value accurately to 8dp.
e.g. 1580.00000001 and 1580.00000002 come out the same if divided by 11 and then rounded to 4dp - so you cannot distinguish between them when reversing the operation, so one of them must come out 'wrong'.