javascript - 使用 Fraction.js 将小数转换为最接近 1/16 的分数
问题描述
我正在开发一个旧的 Angularjs 应用程序,我需要能够将十进制格式的数字转换为最接近的 1/16 的分数。我已经搜索了几个小时,我发现似乎最好的一个选项是Fraction.js。但是,当遵循诸如此处的示例时,我得到了不正确的分数。例如:
var convertToFraction = function (decimal) {
// Round to the neareest 1/16
var f = new Fraction(decimal);
var newVal = f.toFraction();
return newVal;
};
157293/2000"
如果我传入 的值78.6465
,3/2
如果我传入 的值,我会得到1.500
。对于78.6465
,我想得到78 5/8
。
我还需要做些什么来让它以正确的形式返回值,而不是不正确的分数形式?另外,在将值传递给 之前,我是否需要自己将小数四舍五入到最接近的 1/16 Fraction
,像这样?
var convertToFraction = function (decimal) {
// Round to the nearest 1/16
var rounded = (Math.round(decimal * 16) / 16).toFixed(3);
var f = new Fraction(rounded);
var newVal = f.toFraction();
return newVal;
};
即使这样,我仍然得到不正确的格式。
解决方案
为了得到正确的分数,我只需要将true
参数传递给toFraction()
:
var newVal = f.toFraction(true);
推荐阅读
- javascript - 单击最后一个点时如何绘制多边形?
- javascript - 如何在 Promise 中使用 Promise?
- hbase - Geomesa HBase中基于JSON属性的远程过滤
- python - 将 jupyter notebook 文件转换为 .exe 文件时出错
- shell - 需要 sudo 来运行 erlang escript,即使该文件具有执行权限
- ruby-on-rails - 如何让 Minitest 在控制器测试中解析助手?
- c++ - 在 C++ 代码中询问以提示用户输入函数表达式
- python - 如何将文件中的行加载到可以是字符串、浮点数或整数的变量中?
- css - 为什么 flex-basis 计算在 SASS 中返回错误?
- pandas - pandas isin() 在具有对象类型列的数据帧之间失败