[英]convert decimal number to fraction in javascript or closest fraction
[英]Decimal to Fraction in JavaScript
我写了这个简单的脚本来将小数转换为分数,但它不起作用。 什么都没输出。
var decimal = 1.75;
var decimalArray = decimal.split("."); // 1.75
var leftDecimalPart = decimalArray[0]; // 1
var rightDecimalPart = decimalArray[1]; // 75
var numerator = leftDecimalPart + rightDecimalPart; // 175
var denominator = Math.pow(10, rightDecimalPart.length); // 100
document.write(numerator + " / " + denominator);
JS Bin: http : //jsbin.com/exepir/1/edit
你不能“分裂”数字。
如果你看一下控制台,你会看到
未捕获的TypeError:对象1.75没有方法'拆分'
你应该在JSBin上使用JavaScript部分,它会在底部的红色框中显示这样的错误。
最简单的修复? 通过将其写为字符串文字使其成为字符串:
var decimal = '1.75';
或者在拆分之前调用.toString()
:
var decimalArray = decimal.toString().split(".");
而分子在上面:
document.write(numerator + " / " + denominator);
由于使用字符串不是解决问题的最佳方法,我建议您使用快速替代解决方案,该解决方案仅适用于数字:
var decimal = 1.75,
numerator = decimal,
denominator = 1;
while (numerator % 1) numerator *= 10;
denominator = numerator / decimal;
console.log(numerator + " / " + denominator);
// >> "175 / 100"
如果你想确保它在一般情况下工作,我会依赖一个经过良好测试的库,比如Fraction.js 。
var f = new Fraction(1.75);
console.log(f.toFraction()); // Results "1 3/4"
console.log(f.s * f.n + " / " + f.d); // Results "7 / 4"
console.log(f.toString()); // Results "1.75"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.