簡體   English   中英

除以一個浮點數,將其四舍五入為兩位小數,然后計算余數

[英]divide a floating number, rounding it to 2 decimals, and calculate the remainder

說我有以下數字2,74。

如果將該數字除以4,則結果為0.685。

我想將此數字除以4,但結果應四舍五入為2個小數。 所以我的結果應該是:

3倍的0.69,其余的為0.67

有人知道如何在javascript中執行此操作嗎? 我完全不知道我該如何解決。

這是您可以執行此操作的方法:

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返回浮點數

由於您要查找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;

如有必要,請測試解決方案。

 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>'); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM