将一个十进制数转换成八分之一的分数
Convert a decimalized number into a fraction of eighths
可以肯定这是一个简单的问题,但我在思考它时遇到了问题。假设我有一个十进制数:
1.25
1.5
2.75
2.45
如何将小数部分转换为八分之一?例如
1 2/8
1 4/8
2 6/8
2 3/8 // I need to round down rather than up when its not a simple conversion.
非常感谢!
这是一个简单的函数,只使用普通Javascript中的Math(无拆分)来计算分数。
document.addEventListener("DOMContentLoaded", function(event) {
document.getElementById("number").addEventListener("change", function(event) {
var f = parseFloat(document.getElementById("number").value); // float
var a = Math.abs(f); // absolute value
var w = Math.floor(a); // whole number
var r = a - w; // remainder
var d = Math.floor(r / .125); // denominator
document.getElementById("results").innerHTML = f + " as a fraction: " + (f < 0 ? '-' : '') + w + ' ' + (d > 0 ? d + '/8' : '') + '<br>' + document.getElementById("results").innerHTML;
})});
Enter a number to convert to fractions of 1/8s.<br>
<input type="text" id="number" name="number" />
<div id="results"></div>
提取小数部分(取浮点1模或减去截断为整数的数字,特别注意负数),然后将其乘以8。这就变成了分母为8的分数的分子。
例如,1.25转换为1和0.25*8"超过8",即"1和2/8"。
由于100 / 8 = 12.5
(即1/8),您需要进行一些计算来检查您的分数部分是多少(可能是错误的,没有进行深度测试):
$(document).ready(function() {
$('#num').change(function() {
var number = $(this).val();
var parts = number.split('.');
if (typeof parts[1] == 'undefined') {
parts[1] = 0;
}
var fraction = parseInt((parts[1] + '00').substring(0, 2));
if (fraction != 0) {
fraction = Math.floor(fraction / 12.5); // 100 / 8
$('span').text(parts[0] + ' ' + fraction + '/8');
} else {
$('span').text(parts[0]);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="num" /><span></span>
考虑负数、0/8分数和零:
var arr = [1.25, 1.5, 2.75, 2.45, 130.4576, 0.00, -0, 0, -1.5, -42, -59.12, -59.98, -60.01];
var decimal;
var numerator;
var output;
arr.forEach(function(number) {
integer = number.toString().match(/^(-?'d*)'.?/).slice(1);
decimal = number.toString().match(/'.'d*$/);
numerator = Math.floor(decimal * 8);
output = numerator ? integer + ' ' + numerator + '/8' : integer;
document.body.insertAdjacentHTML('beforeend', output + '<br>');
});
相关文章:
- 有没有一种简单的方法可以将整数转换为等效文本.即:1变为1
- E4X中是否有一种方法可以将基元数据类型的XMLList转换为类似于Array.join()的Array
- 有没有一种方法可以在three.js中自定义纹理之间的转换
- 将一个十进制数转换成八分之一的分数
- 在输出数字的千分之一位置插入逗号
- 将日期字符串转换为另一种语言
- 数据互绑定问题:转换器只运行一次,无法绑定元素的 ID
- 如何将返回一串数字的 JSON 属性转换为日期
- 在JavaScript中,有没有一种方法可以解析JSON,将数字转换为字符串
- 将触摸事件转换为鼠标事件仅每秒有效一次
- Javascript 将 int 值转换为八位字节流数组
- 是否有一种功能齐全的范式语言可以转换为JavaScript
- 使用第 n 个类型设置一组八个元素的样式
- 我如何制作一个类似GreaseMonkey的脚本,在下三分之一显示不同的页面
- 如何在循环迭代的每三分之一上做一些事情
- 根据文本框值(而非DateTimes)计算时间,返回四分之一小时
- JavaScript数学函数:如何在千分之一处设置逗号格式的答案
- 使用jQuery检查四分之一是否按顺序排列
- 将对象中的值按四分之一系统求和
- 有没有更好的方法来创建一个四分之一的列表,从给定的四分之一开始倒数