JS | Parse Float
by Zoltan Boros
HTML
<pre id="out"></pre>
JavaScript
var outElement = document.getElementById("out");
function print(string)
{
outElement.innerHTML += string + "\n";
}
function parseFloatStrictly(x)
{
if (isNaN(x)) {
throw "'" + x + "' is not a real number.";
}
if (typeof x === "number") {
return x;
}
if (typeof x === "string" || x instanceof String) {
x = x.trim();
if (x == "") {
throw "'" + x + "' is not a real number.";
}
var result = x * 1;
if (isNaN(result)) {
throw "'" + x + "' is not a real number.";
}
return result;
}
throw "'" + x + "' is not a real number.";
}
var items = [
{ value : false, isFloat : false },
{ value : true, isFloat : false },
{ value : 12, isFloat : true },
{ value : -14, isFloat : true },
{ value : +15, isFloat : true },
{ value : 0, isFloat : true },
{ value : 2.3, isFloat : true },
{ value : "34", isFloat : true },
{ value : "12.34", isFloat : true },
{ value : "12,34", isFloat : false },
{ value : "12.34a", isFloat : false },
{ value : "", isFloat : false },
{ value : "NaN", isFloat : false },
{ value : NaN, isFloat : false },
{ value : "a", isFloat : false }
];
for (var i in items) {
var value = items[i].value;
var isFloat = items[i].isFloat;
var valueAsFloat, verdict;
try {
valueAsFloat = parseFloatStrictly(value);
verdict = isFloat;
} catch (ex) {
valueAsFloat = "n.a.";
verdict = !isFloat;
}
print("'" + value + "' (" + typeof value + ") as float: " + valueAsFloat + " (" + (verdict ? "ok" : "NOK") + ")");
}