繁体   English   中英

JavaScript中的十进制到分数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM