划分浮点数,将其四舍五入为2位小数,并计算余数

时间:2015-10-28 15:54:05

标签: javascript

说我有以下号码2,74。

如果将此数字除以4,则结果为0.685。

我想将此数字除以4,但结果应舍入为2位小数。 所以我的结果应该是:

3次0.69 剩下的0.67

有没有人知道如何在javascript中做到这一点?我完全不知道应该如何解决这个问题。

3 个答案:

答案 0 :(得分:1)

这是一种可以做到这一点的方法:

var n = 2.74
var x = (n / 4).toFixed(2)
// renders string "0.69"
var r = (n - 3 * parseFloat(x, 10)).toFixed(2)
// renders string "0.67"

说明:

  • 方法(n).toFixed(x)使用nx个数字,并返回一个字符串

  • 方法parseFloat(s, b)接受字符串s并返回基础b中的浮点数

答案 1 :(得分:0)

由于您要查找2位数的精度,因此您希望将数字乘以10^2(100),然后通过调用Math.round舍入到最接近的整数。然后将结果除以乘以(100)的相同因子。

如果你想要更多的精度数字(在小数点后),那么只需乘以/除以10的更大的幂(例如:3位数将是1000,4将是10000,等等。)

var n = 2.74;
var result = Math.round((n / 4) * 100) / 100;

document.getElementById('output').innerHTML = (result * 3).toString() + '<br>' + (n - (result*3));
<div id="output"></div>

对您的问题的评论中提到的另一个选项是使用toFixed

var n = 2.74;
var result = (n/4).toFixed(2) * 3;

答案 2 :(得分:0)

测试解决方案是否需要剩余。

&#13;
&#13;
function getParts(num, parts, precision) {
    var v = +(num / parts).toFixed(precision),
        r = +(num - v * (parts - 1)).toFixed(precision);
    return v === r ? { parts: parts, value: v } : { parts: parts - 1, value: v, remainder: r };
}
document.write('<pre>' + JSON.stringify(getParts(2.74, 4, 2), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(getParts(3, 4, 2), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(getParts(4, 3, 2), 0, 4) + '</pre>');
&#13;
&#13;
&#13;