var d2f = function(d) {
var has_string = d.toString().search(/[a-zA-Z]/);
if(has_string != -1)return "不合法的输入";
if(d == parseInt(d))return d + '/' + '1';
var t = d.toString().includes(".")? d.toString().replace(/\d+[.]/, ''): 0;
var b =Math.pow(10, t.toString().replace('-', '').length);
if(d >= 1) {
t = +t +(Math.floor(d)* b);
}else if(d <= -1) {
t = +t +(Math.ceil(d)* b);
}
var divisor =(function f(t, b) {
return b ? f(b, t % b): t;
})(t, b);
var x =Math.abs(divisor);
return(t / x)+ '/' +(b / x);
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
小数:<input type="text" id="d" value="0.2">
<br/>
<br/>
整数:<input type="text" id="f">
</body>
<script>
window.onload = function () {
foo.monitor();
}
var foo = (function () {
var d = document.getElementById('d');
var f = document.getElementById('f');
var monitor = function () {
setInterval(function () {
if (d.value != d.dataset.old) {
f.value = d2f(d.value);
d.dataset.old = d.value;
}
}, 500);
}
var d2f = function (d) {
var has_string = d.toString().search(/[a-zA-Z]/);
if (has_string != -1) return "不合法的输入";
if (d == parseInt(d)) return d + '/' + '1';
var t = d.toString().includes(".") ? d.toString().replace(/\d+[.]/, '') : 0;
var b = Math.pow(10, t.toString().replace('-', '').length);
if (d >= 1) {
t = +t + (Math.floor(d) * b);
} else if (d <= -1) {
t = +t + (Math.ceil(d) * b);
}
var divisor = (function f(t, b) {
return b ? f(b, t % b) : t;
})(t, b);
var x = Math.abs(divisor);
return (t / x) + '/' + (b / x);
}
return {
monitor: monitor,
}
})();
</script>
</html>
评论区