So here is the clean Script way.
HTML:
<div><span>Your text</span></div>
CSS:
*
{
    margin: 0;
    padding: 0;
}
div
{
    display: inline-block;
    border: 1px solid black;
    border-radius: 50%;
    text-align: center;
}
    div:before
    {
        content: '';
        display: inline-block;
        height:100%;
        vertical-align: middle;
    }
span
{
    vertical-align: middle;
    display: inline-block;
}
JQuery:
var width = Math.sqrt($("span").width() * $("span").height());
var sqrt2 = Math.sqrt(2);
$("span").height(width);
$("span").width(width);
$("div").width(sqrt2 * width);
$("div").height(sqrt2 * width);
because of spaces between the word, and how they break.. this solution may bug on small texts.
same HTML & CSS, minor changes in Script
Here's a better solution (works better 
even with small texts)
JQuery:
var div = $("div");
var span = $("span");
span.width(Math.sqrt(span.width() * span.height()));
span.width(Math.sqrt(span.width() * span.height()));
div.width(Math.sqrt(2) * span.width());
div.height(div.width());
the reason that I repeat that line
span.width(Math.sqrt(span.width() * span.height()));
its because the more I use it, the better I scale of the span around the text. (causing the circle to be tighter around the text)