我写了这个简单的脚本来将小数转换为分数,但它不起作用。什么都没有输出。
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);
答案 0 :(得分:7)
你不能“分割”数字。
如果你看一下控制台,你会看到
未捕获的TypeError:对象1.75没有方法'split'
你应该在JSBin上使用JavaScript部分,它会在底部的红色框中显示这样的错误。
最容易修复?通过将其写为字符串文字来使其成为字符串:
var decimal = '1.75';
或者在拆分之前致电.toString()
:
var decimalArray = decimal.toString().split(".");
分子排在最前面:
document.write(numerator + " / " + denominator);
答案 1 :(得分:1)
由于使用字符串不是解决问题的最佳方法,我建议您使用快速替代解决方案,仅适用于数字:
var decimal = 1.75,
numerator = decimal,
denominator = 1;
while (numerator % 1) numerator *= 10;
denominator = numerator / decimal;
console.log(numerator + " / " + denominator);
// >> "175 / 100"
答案 2 :(得分:1)
如果你想确保它适用于一般情况,我会依赖经过良好测试的库,例如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"