An ordinary float has 23 bits of precision, that's 1 part in 8million (2^23) or so that might get lost when you add 2 numbers of the same scale (the same power of 2). So probably not a problem in this application.
One thing you can do is remove the multiply by radius by using glScale.
ie. add
glScalef(radius, radius, 1)
before the loop and it'll get built into the transformation matrix.
Other people will come along and say that you need even less precision in your angles. Let's say you only wanted 1/16th of a degree accuracy, then you can pre-calculate sin() and cos() values into an array.
dim zin(360*16)
dim coz(360*16)
for i = 0 to 360*16
zin(i) = sin(i/16)
coz(i) = cos(i/16)
next
The reason for this is sin() and cos() are slow functions.
The your main loop becomes
glvertex3f(coz(int(subangle*16))*radius,zin(int(subangle*16))*radius,0)
I've chosen 16 because the compiler will be able to use special tricks for multiplying and dividing by powers of 2 using shifts.
Whether this is really worthwhile in this day and age is questionable, since sin and cos can be calculated very quickly by a modern Intel CPU, but if you call sin and cos a lot it might make a difference.
Combine that with what Chris said and the code disappears to nothing

Jim