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

目 录CONTENT

文章目录

分数TO小数

Dettan
2022-01-09 / 0 评论 / 0 点赞 / 97 阅读 / 329 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
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>
0

评论区