jquery将decimal的结果转换为分数

我有将像素转换为英寸的代码。 但结果是小数。

如何让结果返回英寸的分数,例如:1/4而不是.25

这是HTML:

   
Inches

这是Jquery:

 $(document).ready(function(){ $(".calcd").keyup(function(){ var val1 = parseInt($("#calc3").val()); var val2 = parseInt($("#calc4").val()); if ( ! isNaN(val1) && ! isNaN(val2)) { $("#result2").text((val1 / val2).toFixed(2)); } }); }); 

我在stackoverflow上看到了这个 :

使用var decimal = eval(fraction); 会工作,但我很困惑。

这是JsFiddle

你有两个选择:

  • Working demo => : http : //jsfiddle.net/Nn2yq/ – 将十进制数转换为分数/有理数
  • 你可以使用这个: https : //github.com/ekg/fraction.js

你只需要一个$(document).ready(function () {

希望这可以帮助。 :)

 $(document).ready(function () { $(".calc").keyup(function () { var val1 = parseInt($("#calc1").val()); var val2 = parseInt($("#calc2").val()); if (!isNaN(val1) && !isNaN(val2)) { $("#result").text(val1 * val2); } }); $(".calcd").keyup(function () { var val1 = parseInt($("#calc3").val()); var val2 = parseInt($("#calc4").val()); if (!isNaN(val1) && !isNaN(val2)) { $("#result2").text(fraction((val1 / val2).toFixed(2))); } }); }); //convert a decimal into a fraction function fraction(decimal) { if (!decimal) { decimal = this; } whole = String(decimal).split('.')[0]; decimal = parseFloat("." + String(decimal).split('.')[1]); num = "1"; for (z = 0; z < String(decimal).length - 2; z++) { num += "0"; } decimal = decimal * num; num = parseInt(num); for (z = 2; z < decimal + 1; z++) { if (decimal % z == 0 && num % z == 0) { decimal = decimal / z; num = num / z; z = 2; } } //if format of fraction is xx/xxx if (decimal.toString().length == 2 && num.toString().length == 3) { //reduce by removing trailing 0's decimal = Math.round(Math.round(decimal) / 10); num = Math.round(Math.round(num) / 10); } //if format of fraction is xx/xx else if (decimal.toString().length == 2 && num.toString().length == 2) { decimal = Math.round(decimal / 10); num = Math.round(num / 10); } //get highest common factor to simplify var t = HCF(decimal, num); //return the fraction after simplifying it return ((whole == 0) ? "" : whole + " ") + decimal / t + "/" + num / t; } function HCF(u, v) { var U = u, V = v while (true) { if (!(U %= V)) return V if (!(V %= U)) return U } } 

工作截图

在此处输入图像描述