侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

分数TO小数

Dettan
2022-01-09 / 0 评论 / 0 点赞 / 30 阅读 / 1,530 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
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 &quot;不合法的输入&quot;;
        if (d == parseInt(d)) return d + '/' + '1';
        var t = d.toString().includes(&quot;.&quot;) ? d.toString().replace(/\d+[.]/, '') : 0;
        var b = Math.pow(10, t.toString().replace('-', '').length);
        if (d &gt;= 1) {
            t = +t + (Math.floor(d) * b);
        } else if (d &lt;= -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>

0

评论区