说我有以下号码2,74。
如果将此数字除以4,则结果为0.685。
我想将此数字除以4,但结果应舍入为2位小数。 所以我的结果应该是:
3次0.69 剩下的0.67
有没有人知道如何在javascript中做到这一点?我完全不知道应该如何解决这个问题。
答案 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)
使用n
个x
个数字,并返回一个字符串
方法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)
测试解决方案是否需要剩余。
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;